top down div body animate javascript jquery scrolltop

javascript - down - $(document).scrollTop() siempre devuelve 0



scrolltop div (8)

Eliminando height: 100%; Las etiquetas html y body pueden resolver el problema.

La razón:

El motivo es que podría haber establecido el 100% como valor de la propiedad de altura de los elementos html y body. Si establece la propiedad de altura de los elementos html y cuerpo en 100%, obtendrán una altura igual a la altura del documento.

Vea esto: https://www.dawoodnajam.tech/blog/2017/11/17/jquery-scrolltop-returns-0/

Simplemente estoy tratando de hacer algo una vez que la posición de desplazamiento de la página alcanza una cierta altura. Sin embargo, scrollTop() está devolviendo 0 o null sin importar qué tan abajo me desplace. Esta es la función de ayuda que estoy usando para verificar el valor de scrollTop() :

$(''body'').click(function(){ var scrollPost = $(document).scrollTop(); alert(scrollPost); });

He intentado adjuntar scrollTop() a $(''body'') , $(''html'') y por supuesto $(window) , pero nada cambia.

¿Algunas ideas?


Mi solución, después de probar algunos de los anteriores y que no implica cambiar ningún CSS:

var scroll_top = Math.max( $("html").scrollTop(), $("body").scrollTop() )

Esto funciona en versiones actualizadas de Chrome, Firefox, IE y Edge.


Por alguna razón, la eliminación de ''altura: 100%'' de mis etiquetas html y body solucionó este problema.

¡Espero que esto ayude a alguien más!


Por cierto, parece que deberías usar

$("body").scrollTop()

en lugar de

$(".some-class").scrollTop

Por eso estoy atascado.


Scroll Top siempre devolvía 0 para mí también. Lo estaba usando para enfocar el elemento específico en una página. Utilicé otro enfoque para hacerlo.

document.getElementById ("elementID"). scrollIntoView ();

Trabajando bien para mí en dispositivos móviles, tabletas y computadoras de escritorio.


Solo tengo un complemento para aquellos que pueden cometer el mismo error que yo. Mi código fue el siguiente:

var p = $(''html,body''); $( ".info" ).text( "scrollTop:" + p.scrollTop() );

Este código funcionará en todos los navegadores, excepto en los navegadores de webkits como chrome y safari, ya que la etiqueta <html> siempre tiene un valor scrollTop de cero o nulo.

Los otros navegadores lo ignoran mientras que los navegadores de webkit no.

La solución más simple es simplemente eliminar la etiqueta html de su código y voila:

var p = $(''body''); $( ".info" ).text( "scrollTop:" + p.scrollTop() );


Tuve el mismo problema con scroll = 0 en:

document.body.scrollTop

Uso la próxima vez

document.scrollingElement.scrollTop

Editar 01.06.2018

Si usa el event entonces tiene un objeto que tiene un elemento de document en target o srcElement . Aquí hay una tabla que muestra la operación de desplazamiento en diferentes navegadores.

Como puede ver, Firefox e IE no tienen srcElement y IE 11 no admite scrollingElement .


tenia el mismo problema scrollTop () funciona con algún bloque, no documento o cuerpo. Para hacer que este método funcione, debe agregar altura y estilo de desbordamiento para su bloque:

#scrollParag { height: 500px; overflow-y: auto; }

Y entonces:

var scrolParag = document.getElementById(''scrollParag''); alert(scrolParag.scrollTop); // works!