Jak określić odległość między wierzchołkiem elementu div a górą bieżącego ekranu? Chcę tylko odległość w pikselach na górze bieżącego ekranu, a nie na górze dokumentu. Próbowałem kilka rzeczy, takich jak .offset()
i .offsetHeight
, ale po prostu nie mogę otoczyć mojego mózgu. Dzięki!Określ odległość od wierzchołka elementu div do początku okna za pomocą javascript
92
A
Odpowiedz
194
Można użyć .offset()
aby uzyskać przesunięcie w stosunku do elementu document
a następnie użyć właściwości elementu window
scrollTop
znaleźć, jak daleko w dół strony użytkownik przewijane:
var scrollTop = $(window).scrollTop(),
elementOffset = $('#my-element').offset().top,
distance = (elementOffset - scrollTop);
Zmienna distance
teraz utrzymuje odległość od góry elementu #my-element
i górnego zagięcia.
Oto demo: http://jsfiddle.net/Rxs2m/
Zauważ, że wartości ujemne oznaczają, że element znajduje się powyżej górnego-krotnie.
4
użyłem to:
myElement = document.getElemenById("xyz");
Get_Offset_From_Start (myElement); // returns positions from website's start position
Get_Offset_From_CurrentView (myElement); // returns positions from current scrolled view's TOP and LEFT
Kod:
function Get_Offset_From_Start (object, offset) {
offset = offset || {x : 0, y : 0};
offset.x += object.offsetLeft; offset.y += object.offsetTop;
if(object.offsetParent) {
offset = Get_Offset_From_Start (object.offsetParent, offset);
}
return offset;
}
function Get_Offset_From_CurrentView (myElement) {
if (!myElement) return;
var offset = Get_Offset_From_Start (myElement);
var scrolled = GetScrolled (myElement.parentNode);
var posX = offset.x - scrolled.x; var posY = offset.y - scrolled.y;
return {lefttt: posX , toppp: posY };
}
//helper
function GetScrolled (object, scrolled) {
scrolled = scrolled || {x : 0, y : 0};
scrolled.x += object.scrollLeft; scrolled.y += object.scrollTop;
if (object.tagName.toLowerCase() != "html" && object.parentNode) { scrolled=GetScrolled (object.parentNode, scrolled); }
return scrolled;
}
/*
// live monitoring
window.addEventListener('scroll', function (evt) {
var Positionsss = Get_Offset_From_CurrentView(myElement);
console.log(Positionsss);
});
*/
30
Vanilla:
window.addEventListener('scroll', function(ev) {
var someDiv = document.getElementById('someDiv');
var distanceToTop = someDiv.getBoundingClientRect().top;
console.log(distanceToTop);
});
Otwórz konsolę przeglądarki i przewinąć stronę, aby zobaczyć odległość.
+0
To jest świetna odpowiedź. Twoje zdrowie!! – CodeWarrior
Powiązane problemy
- 1. Jak pozycjonować div na początku innego elementu div za pomocą javascript?
- 2. Uzyskać odległość od powierzchni za pomocą ARKit
- 3. Jak określić URL obrazu tła elementu div za pomocą JavaScript?
- 4. Jak przejść do góry elementu div za pomocą jquery?
- 5. Jak wyczyścić zawartość elementu div za pomocą JavaScript?
- 6. Przewijanie elementu div za pomocą jQuery
- 7. Znajdź odległość między dwoma DIV za pomocą jQuery?
- 8. Zapisywanie zawartości do nowego okna za pomocą JQuery
- 9. zapobiega przeniesieniu elementu div na rozmiar okna
- 10. Odległość od punktu do wielokąta
- 11. Potrzebuję ustalonego pozycjonowanego elementu div wewnątrz bezwzględnie umieszczonego elementu div
- 12. slajdów div od prawej do lewej strony za pomocą animate()
- 13. zmiana widoczności DIV za pomocą JavaScript
- 14. Ukryj wszystkie elementy div za pomocą javascript
- 15. Jak ograniczyć przenoszenie elementu div do elementu div?
- 16. Jak określić odległość obiektu do prawej krawędzi okna przeglądarki?
- 17. Dynamicznie zmieniaj rozmiar okna obszaru roboczego za pomocą javascript/jquery?
- 18. Jak uzyskać przezroczystość elementu za pomocą JavaScript?
- 19. Utwórz element iframe z dołączeniem javascript do elementu div
- 20. Oblicz wymiary bezwzględne elementu div obróconego w perspektywie za pomocą css3
- 21. Dostęp do elementu nadrzędnego elementu za pomocą PHP SimpleXML?
- 22. Usuwanie elementu za pomocą imacro
- 23. Usuń classname od elementu z javascript
- 24. Uzyskaj niestandardowe właściwości css elementu (-mystyle) za pomocą JavaScript
- 25. Jak uzyskać kolor tła elementu za pomocą javascript?
- 26. Ukośnij wierzchołek elementu div za pomocą css bez przekrzywiania tekstu.
- 27. Określ wartości sysctl za pomocą dokowania-komponuj
- 28. Jak zmienić identyfikator elementu HTML za pomocą JavaScript?
- 29. Jak usunąć atrybut id z elementu div za pomocą jQuery?
- 30. Usuwanie elementu div z klasą danych za pomocą BeautifulSoup
możesz chcieć [sprawdź to] (http://www.quirksmode.org/js/findpos.html) – Joseph
'el.getBoundingClientRect(). Top + window.scrollY' – caub
@caub Eh, to po prostu 'el.getBoundingClientRect(). top'. Dodanie pozycji przewijania dodaje do odległości do początku dokumentu. https://developer.mozilla.org/de/docs/Web/API/Element/getBoundingClientRect – lynx