Tengo un cuadro div (llamado flujo) con una cantidad variable de contenido dentro. Este divbox tiene desbordamiento establecido en automático.
Ahora, lo que estoy tratando de hacer es que, cuando use el desplazamiento hacia la parte inferior de este cuadro DIV, cargue más contenido en la página, sé cómo hacer esto (cargar el contenido) pero no sé cómo detectar cuando el usuario se ha desplazado hasta la parte inferior de la etiqueta div? Si quisiera hacerlo durante toda la página, tomaría .scrollTop y restaría eso de .height.
Pero parece que no puedo hacer eso aquí?
Intenté tomar .scrollTop de flux, y luego envolver todo el contenido dentro de un div llamado inner, pero si tomo la Altura interna del flujo, devuelve 564px (el div se establece en 500 como altura) y la altura de 'innner' devuelve 1064, y el scrolltop, cuando en la parte inferior del div dice 564.
¿Que puedo hacer?
fuente
innerHeight()
que se informen decimales En el caso de un usuario alejándose, la suma descrollTop()
yinnerHeight()
siempre será al menos una fracción menorscrollHeight
. Terminé agregando una zona de amortiguación de 20px. El condicional resultante fueif(el.scrollTop() + el.innerHeight() >= el[0].scrollHeight - 20)
dondeel
es igual$(this)
.Encontré una solución que cuando desplaza su ventana y el final de un div que se muestra desde abajo le da una alerta.
En este ejemplo, si se desplaza hacia abajo cuando div (
.posts
) termina, le dará una alerta.fuente
var running = false
declarada antes de esto. Dentro del condicional, verifico ¡Deif(!running) { running = true; // and continue logic }
esta manera solo se llama una vez! Cuando el AJAX se complete, establezcarunning = false;
Aunque la pregunta se hizo hace 5,5 años, aún es más que relevante en el contexto actual de UI / UX. Y me gustaría agregar mis dos centavos.
Fuente: https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollHeight#Determine_if_an_element_has_been_totally_scrolled
Algunos elementos no le permitirán desplazarse a la altura completa del elemento. En esos casos puedes usar:
fuente
Solo una nota adicional aquí, ya que encontré esto cuando busco una solución para un div fijo que quiero desplazar. Para mi escenario, descubrí que es preferible tener en cuenta el relleno en el div para que pueda llegar al final exactamente. Entonces, ampliando la respuesta de @ Dr.Molle, agrego lo siguiente
Eso le dará la ubicación precisa, incluido el relleno y los bordes.
fuente
aunque esto funcionó para mí
fuente
Si necesita usar esto en un div que tiene overflow-y como oculto o desplazarse, algo como esto puede ser lo que necesita.
Encontré que se necesitaba ceil porque el desplazamiento de la altura de la hélice parece redondearse, o tal vez por alguna otra razón que hace que esto sea menos de 1.
fuente
Si no está utilizando la función Math.round (), la solución sugerida por Dr.Molle no funcionará en algunos casos cuando la ventana de un navegador tiene un zoom.
Por ejemplo $ (this) .scrollTop () + $ (this) .innerHeight () = 600
$ (esto) [0] .scrollHeight rendimientos = 599.99998
600> = 599.99998 falla.
Aquí está el código correcto:
También puede agregar algunos píxeles de margen adicionales si no necesita una condición estricta
fuente
En el uso simple de DOM, puede verificar la condición
si es verdad, entonces has llegado al final.
fuente
Si alguien obtiene
scrollHeight
comoundefined
, seleccione los elementos del primer subelemento:mob_top_menu[0].scrollHeight
fuente
No estoy seguro de si es de alguna ayuda, pero así es como lo hago.
Tengo un panel de índice que es más grande que la ventana y lo dejo desplazarse hasta el final de este índice. Luego lo arreglo en posición. El proceso se invierte una vez que te desplazas hacia la parte superior de la página.
Saludos.
fuente
A pesar de que esto se hizo hace casi 6 años, todavía es un tema candente en el diseño de UX, aquí hay un fragmento de demostración si algún novato quería usar
fuente
Chicos, esta es la solución al problema del zoom, funciona con todos los niveles de zoom, en caso de que lo necesiten:
fuente
Este es el código en github.
fuente
Aquí hay otra versión.
El código clave es la función scroller () que toma la entrada como la altura del div que contiene la sección de desplazamiento, usando overflow: scroll. Se aproxima a 5 px desde la parte superior o 10 px desde la parte inferior como en la parte superior o inferior. De lo contrario, es demasiado sensible. Parece que 10px es el mínimo. Verá que agrega 10 a la altura div para obtener la altura inferior. Supongo que 5px podría funcionar, no lo probé extensamente. YMMV. scrollHeight devuelve la altura del área de desplazamiento interior, no la altura mostrada del div, que en este caso es de 400 px.
fuente