Como determino a distância entre o topo de uma div e o topo da tela atual? Eu só quero a distância do pixel na parte superior da tela atual, não na parte superior do documento. Eu tentei algumas coisas como .offset()
e .offsetHeight
, mas simplesmente não consigo envolver meu cérebro em torno disso. Obrigado!
javascript
jquery
Joel Eckroth
fonte
fonte
el.getBoundingClientRect().top+window.scrollY
el.getBoundingClientRect().top
. A adição da posição de rolagem aumenta a distância até a parte superior do documento. developer.mozilla.org/de/docs/Web/API/Element/…Respostas:
Você pode usar
.offset()
para obter o deslocamento comparado aodocument
elemento e, em seguida, usar ascrollTop
propriedade dowindow
elemento para descobrir o quão abaixo a página o usuário rolou:A
distance
variável agora mantém a distância entre a parte superior do#my-element
elemento e a dobra superior.Aqui está uma demonstração: http://jsfiddle.net/Rxs2m/
Observe que valores negativos significam que o elemento está acima da dobra superior.
fonte
distance
variável para ver se é valor,120
mas eu recomendaria verificar um intervalo em vez de um número exato. Se, por exemplo, você rolar com a roda do mouse, poderá muito bem pular mais de 120. Portanto, se você estiver tentando aplicar CSS ou algo quando o elemento estiver a 120px da dobra superior, talvez useif (distance < 120) { /* do something */}
. Aqui está uma demonstração atualizada: jsfiddle.net/na5qL91oBaunilha:
Abra o console do navegador e role a página para ver a distância.
fonte
distanceToTop
retorno é relativo (pode até ser negativo se o usuário tiver passado a rolagem). Para levar isso em conta, usewindow.pageYOffset + someDiv.getBoundingClientRect().top
Isso pode ser alcançado puramente com JavaScript .
Vejo que a resposta que eu queria escrever foi respondida pelo lince nos comentários à pergunta.
Mas vou escrever a resposta de qualquer maneira, porque assim como eu, às vezes as pessoas esquecem de ler os comentários.
Portanto, se você deseja apenas obter a distância de um elemento (em pixels) da parte superior da janela da tela, eis o que você precisa fazer:
use getBoundingClientRect ()
É isso aí!
Espero que isso ajude alguém :)
fonte
Eu usei isso:
código:
fonte
Eu usei essa função para detectar se o elemento está visível na porta de visualização
Código:
fonte