javascript - mostrar - ¿Cómo puedo determinar si un div se desplaza hacia abajo?
mostrar div con scroll (4)
¿Cómo puedo determinar, sin usar jQuery o cualquier otra biblioteca de JavaScript, si un div con una barra de desplazamiento vertical se desplaza hacia abajo?
Mi pregunta no es cómo desplazarse hacia abajo. Yo se como hacer eso. Quiero determinar si el div ya se desplazó hacia abajo.
Esto no funciona:
if (objDiv.scrollTop == objDiv.scrollHeight)
Devuelve verdadero si un elemento está al final de su desplazamiento, falso si no es así.
element.scrollHeight - element.scrollTop === element.clientHeight
Estás muy cerca usando scrollTop == scrollHeight
.
scrollTop
refiere a la parte superior de la posición de desplazamiento, que será scrollHeight - offsetHeight
Tu declaración if debería verse así (no olvides usar triple equal):
if( obj.scrollTop === (obj.scrollHeight - obj.offsetHeight))
{
}
Editar: corrigió mi respuesta, estaba completamente equivocado
Para obtener los resultados correctos al tener en cuenta factores tales como la posibilidad de un borde, barra de desplazamiento horizontal y / o conteo de píxeles flotantes, debe usar ...
el.scrollHeight - el.scrollTop - el.clientHeight < 1
NOTA: DEBE usar customerHeight en lugar de offsetHeight si desea obtener los resultados correctos. offsetHeight le dará los resultados correctos solo cuando el no tenga un borde o una barra de desplazamiento horizontal
Poco tarde para esta fiesta, pero ninguna de las respuestas anteriores parece funcionar particularmente bien cuando ...
- La escala de visualización se aplica al sistema operativo para pantallas UHD
- La escala / zoom se aplica al navegador
Para adaptarse a todas las eventualidades, deberá redondear la posición de desplazamiento calculada:
Math.ceil(element.scrollHeight - element.scrollTop) === element.clientHeight