Al leer los documentos de AngularJS, no he descubierto si $anchorScroll
puedo tener una opción de duración / aceleración para suavizar el desplazamiento a los elementos.
Solo dice:
$location.hash('bottom');
// call $anchorScroll()
$anchorScroll();
No uso jquery y no quiero; ¿Existe todavía una forma inteligente pero sencilla de hacer o ampliar $anchorScroll
para que el desplazamiento sea más fluido?
fuente
<a anchor-smooth-scroll>About 1</a> <a anchor-smooth-scroll>About 2</a>
<div id="my-div">my div</div>
) y luego crear un enlace como este:<a anchor-smooth-scroll="my-div">visit my div</a>
.También puede utilizar el enlace de desplazamiento angular " https://github.com/durated/angular-scroll/ ". Es un desplazamiento suave también algunas funciones de aceleración para obtener un aspecto profesional.
fuente
La respuesta de Brett funcionó muy bien para mí. Hice algunos pequeños cambios en su solución en términos de modularización y capacidad de prueba.
Aquí hay otro ejemplo de trabajo en JsFiddle que incluye la otra versión con pruebas incluidas.
Para las pruebas, estoy usando Karma y Jasmine. La firma se ha modificado ligeramente de la siguiente manera:
Donde elemento es un atributo obligatorio para desplazarse y la velocidad es opcional donde el valor predeterminado es 20 (como lo era antes).
fuente
También puede utilizar ngSmoothScroll, enlace: https://github.com/d-oliveros/ngSmoothScroll .
Simplemente incluya el
smoothScroll
módulo como una dependencia y utilícelo así:<a href="#" scroll-to="my-element-3">Click me!</a>
fuente
Ninguna de las soluciones aquí realmente hace lo que OP pidió originalmente, es decir, hacer que el
$anchorScroll
desplazamiento sea fluido. La diferencia entre las directivas de desplazamiento suave y$anchroScroll
es que usa / modifica$location.hash()
, lo que puede ser deseable en algunos casos.Aquí está la esencia del módulo simple que reemplaza el desplazamiento de $ anchorScroll con un desplazamiento suave. Utiliza https://github.com/oblador/angular-scroll biblioteca para el desplazamiento en sí (reemplácelo con otra cosa si lo desea, debería ser fácil).
https://gist.github.com/mdvorak/fc8b531d3e082f3fdaa9
Nota: En realidad, no obtiene $ anchorScroll para desplazarse sin problemas, pero reemplaza su controlador para el desplazamiento.
Habilítelo simplemente haciendo referencia al
mdvorakSmoothScroll
módulo en su aplicación.fuente
Alan, gracias. Si alguien estaba interesado, lo formateé según los estándares de John Pappa.
fuente
No sé cómo animar
$anchorScroll
. Así es como lo hago en mis proyectos:Y la función JS:
fuente