Estou tentando detectar a posição da barra de rolagem do navegador com JavaScript para decidir onde está a exibição atual da página. Meu palpite é que preciso detectar onde está o polegar na pista e, em seguida, a altura do polegar como uma porcentagem da altura total da pista. Estou complicando demais ou o JavaScript oferece uma solução mais fácil que essa? Alguma idéia em termos de código?
javascript
browser
scroll
dom-events
Paulo
fonte
fonte
element
edocument.body
foram apenas exemplos). Consulte howtocreate.co.uk/tutorials/javascript/browserwindow para obter detalhes.window.pageYOffset
, mas não consigo fazer nada funcionar no IE7. Tentouwindow.pageYOffset
,document.body.scrollTop
,document.documentElement.scrollTop
,element.scrollTop
document.body
na maioria dos navegadores modernos - geralmente está definidadocument.documentElement
agora. Consulte bugs.chromium.org/p/chromium/issues/detail?id=157855 para obter a transição do Chrome.Eu fiz isso para um
<div>
no Chrome.elemento .scrollTop - são os pixels ocultos na parte superior devido à rolagem. Sem rolagem, seu valor é 0.
elemento .scrollHeight - são os pixels de toda a div.
elemento .clientHeight - são os pixels que você vê no seu navegador.
será a posição.
será o valor máximo para scrollTop .
será a porcentagem de rolagem [de 0 a 1] .
fonte
retorna uma matriz com dois inteiros- [scrollLeft, scrollTop]
fonte
É tipo isso :)
fonte
Resposta para 2018 :
A melhor maneira de fazer isso é usar a API Intersection Observer .
Veja o seguinte exemplo de código:
A maioria dos navegadores modernos oferece suporte ao IntersectionObserver , mas você deve usar o polyfill para compatibilidade com versões anteriores.
fonte
se você se importa com a página inteira. você pode usar isso:
fonte
Se você estiver usando jQuery, existe uma função perfeita para você: .scrollTop ()
doc here -> http://api.jquery.com/scrollTop/
nota: você pode usar esta função para recuperar OU definir a posição.
veja também: http://api.jquery.com/?s=scroll
fonte
Aqui está a outra maneira de obter a posição de rolagem
fonte
Eu acho que a seguinte função pode ajudar a ter valores de coordenadas de rolagem:
Eu recebi essa idéia dessa resposta com uma pequena mudança.
fonte