Quiero desplazarme suavemente hacia abajo. No quiero tener que escribir una función para eso, especialmente si jQuery ya tiene una.
javascript
jquery
Bryan Field
fuente
fuente
html
ybody
? Aquí hay una idea: stackoverflow.com/questions/2123690/… , pero no es una respuesta completa.<html>
tieneoverflow-x:hidden;
este animado no funcionará. (No podría funcionar paraoverflow-y:hidden
yoverflow:hidden
, pero no lo he probado.body
funcionó en Chrome a principios de este año, pero ahora tiene que ser asíhtml
.La respuesta de Nick funciona muy bien. Tenga cuidado al especificar una función complete () dentro de la llamada animate () porque se ejecutará dos veces ya que tiene dos selectores declarados (html y body).
Así es como puede evitar la doble devolución de llamada.
fuente
die()
función antes de lalive()
llamada de función. Esto garantiza que sulive()
controlador se llamará solo una vez.La respuesta de Nick funciona muy bien y la configuración predeterminada es buena, pero puedes controlar más completamente el desplazamiento completando todas las configuraciones opcionales.
así es como se ve en la API:
para que puedas hacer algo como esto:
Aquí está la página API de la función jQuery .animate: http://api.jquery.com/animate/
fuente
Como mencionó Kita, hay un problema con la activación de múltiples devoluciones de llamada cuando se anima tanto en 'html' como en 'body'. En lugar de animar a ambos y bloquear las devoluciones de llamadas posteriores, prefiero usar alguna detección de funciones básicas y solo animar la propiedad scrollTop de un solo objeto.
La respuesta aceptada en este otro hilo da una idea de qué propiedad scrollTop del objeto deberíamos intentar animar: pageYOffset Scrolling and Animation en IE8
ACTUALIZACIÓN - - -
El intento anterior de detección de características falla. Parece que no hay una forma de una línea de hacerlo como página de navegadores de tipo webkit La propiedad Offset siempre devuelve cero cuando hay un doctype. En cambio, encontré una manera de usar una promesa de hacer una única devolución de llamada cada vez que se ejecuta la animación.
fuente
Tengo lo que creo que es una mejor solución que el
$('html, body')
hack.No es una línea, pero el problema que tuve
$('html, body')
es que si inicias sesión$(window).scrollTop()
durante la animación, verás que el valor salta por todas partes, a veces por cientos de píxeles (aunque no veo nada de eso sucediendo visualmente). Necesitaba que el valor fuera predecible, para poder cancelar la animación si el usuario agarraba la barra de desplazamiento o giraba la rueda del mouse durante el desplazamiento automático.Aquí hay una función que animará el desplazamiento sin problemas:
A continuación se muestra una versión más compleja que cancelará la animación sobre la interacción del usuario, así como también se recargará hasta alcanzar el valor objetivo, lo cual es útil cuando se intenta configurar el scrollTop instantáneamente (por ejemplo, simplemente llamando
$(window).scrollTop(1000)
, en mi experiencia, esto no funciona. 50% del tiempo)fuente
Tenía problemas donde la animación siempre comenzaba desde la parte superior de la página después de una actualización de la página en los otros ejemplos.
Solucioné esto no animando el CSS directamente, sino llamando
window.scrollTo();
a cada paso:Esto también evita el problema de
html
vsbody
, ya que está usando JavaScript entre navegadores.Eche un vistazo a http://james.padolsey.com/javascript/fun-with-jquerys-animate/ para obtener más información sobre lo que puede hacer con la función animada de jQuery.
fuente
Puede usar la animación jQuery para la página de desplazamiento con una duración específica:
donde 1024px es el desplazamiento de desplazamiento y 5000 es la duración de las animaciones en milisegundos.
fuente
$("html, body").animate({scrollTop: 1024}, 5000);
también funciona.Pruebe el complemento scrollTo .
fuente
fuente
Si desea desplazarse hacia abajo al final de la página (por lo que no necesita desplazarse hacia abajo), puede usar:
fuente
Pero si realmente desea agregar algo de animación mientras se desplaza, puede probar mi complemento simple ( AnimateScroll ) que actualmente admite más de 30 estilos de suavizado
fuente
el código del navegador cruzado es:
no tiene animación pero funciona en todas partes
fuente