Próbuję wykryć pozycję paska przewijania przeglądarki za pomocą JavaScript, aby zdecydować, gdzie na stronie jest bieżący widok. Domyślam się, że muszę wykryć, gdzie jest kciuk na ścieżce, a następnie wysokość kciuka jako procent całkowitej wysokości ścieżki. Czy nadmiernie to komplikuję, czy JavaScript oferuje łatwiejsze rozwiązanie? Wszelkie pomysły kodowe?
javascript
browser
scroll
dom-events
Paweł
źródło
źródło
element
idocument.body
były tylko przykładami). Szczegółowe informacje można znaleźć na stronie howtocreate.co.uk/tutorials/javascript/browserwindow .window.pageYOffset
, ale nic nie działa na IE7. Próbowaliśmywindow.pageYOffset
,document.body.scrollTop
,document.documentElement.scrollTop
,element.scrollTop
document.body
w większości nowoczesnych przeglądarek - zwykle jestdocument.documentElement
teraz włączona . Zobacz bugs.chromium.org/p/chromium/issues/detail?id=157855 na temat przejścia Chrome.Zrobiłem to
<div>
na Chrome.element .scrollTop - piksele ukryte u góry z powodu przewijania. Bez przewijania jego wartość wynosi 0.
element .scrollHeight - to piksele całego div.
element .clientHeight - to piksele widoczne w przeglądarce.
będzie pozycja.
będzie maksymalną wartością scrollTop .
będzie procentem przewijania [od 0 do 1] .
źródło
zwraca tablicę z dwiema liczbami całkowitymi- [scrollLeft, scrollTop]
źródło
to jest tak :)
źródło
Odpowiedź na rok 2018 :
Najlepszym sposobem na zrobienie takich rzeczy jest użycie API Intersection Observer API .
Zobacz następujący przykład kodu:
Większość współczesnych przeglądarek obsługuje IntersectionObserver , ale powinieneś używać polifillu dla kompatybilności wstecznej.
źródło
jeśli zależy ci na całej stronie. możesz użyć tego:
źródło
Jeśli używasz jQuery, jest dla Ciebie idealna funkcja: .scrollTop ()
doc tutaj -> http://api.jquery.com/scrollTop/
Uwaga: możesz użyć tej funkcji do odzyskania LUB ustawienia pozycji.
patrz także: http://api.jquery.com/?s=scroll
źródło
Oto inny sposób uzyskania pozycji przewijania
źródło
Myślę, że następująca funkcja może pomóc mieć wartości współrzędnych przewijania:
Mam ten pomysł z tą odpowiedź z niewielkimi zmianami.
źródło