he descubierto una mejor forma de animar el desplazamiento, que es el uso de JavaScript para traducir el cuerpo del documento. Las ventajas de animar con traducir sobre margen o posición están bastante bien documentadas (http://goo.gl/nA4ccd). La conclusión es que, al animar elementos, la GPU siempre hará un mejor trabajo.
Aquí hay un ejemplo que calcula la posición actual del usuario desde la parte superior de la ventana y luego vuelve a traducir suavemente a la parte superior de la ventana. Suponga que un usuario haga clic o toque evento activó la función backToTop.
verlo en acción: http://naayt.github.io/starting_point/
function whichTransitionEvent() {
var t,
el = document.createElement('fakeelement'),
transitions = {
'transition':'transitionend',
'OTransition':'oTransitionEnd',
'MozTransition':'transitionend',
'WebkitTransition':'webkitTransitionEnd'
};
for (t in transitions){
if (el.style[t] !== undefined){
return transitions[t];
}
}
}
function backToTop() {
var pos_from_top = window.scrollY,
transitionend = whichTransitionEvent(),
body = document.querySelector("body");
function scrollEndHandler() {
window.scrollTo(0, 0);
body.removeAttribute("style");
body.removeEventListener(transitionend, scrollEndHandler);
}
body.style.overflowY = "scroll";
window.scrollTop = 0;
body.style.webkitTransition = 'all .5s ease';
body.style.transition = 'all .5s ease';
body.style.webkitTransform = "translateY(" + pos_from_top + "px)";
body.style.transform = "translateY(" + pos_from_top + "px)";
transitionend && body.addEventListener(transitionend, scrollEndHandler);
}
No porque no se puede desplazar sin animación en css. – noob
¿Puedes aclarar a qué te refieres con "desplazamiento animado"? Desplazarse, aunque sea mundano, es una forma de animación. ¿Cómo lo animarías más? – Anthony
@Micha Tienes razón, no puedo hacerlo incluso sin la animación. – Spiff