function smoothScroll(target, duration) {
var targetElement = document.querySelector(target);
var targetPosition = targetElement.offsetTop;
var startPosition = window.pageYOffset;
var distance = targetPosition - startPosition;
var startTime = null;
function animation(currentTime) {
if (startTime === null) startTime = currentTime;
var timeElapsed = currentTime - startTime;
var run = ease(timeElapsed, startPosition, distance, duration);
window.scrollTo(0, run);
if (timeElapsed < duration) requestAnimationFrame(animation);
}
function ease(t, b, c, d) {
t /= d / 2;
if (t < 1) return c / 2 * t * t + b;
t--;
return -c / 2 * (t * (t - 2) - 1) + b;
}
requestAnimationFrame(animation);
}
var toTopButton = document.querySelector('.to-top-button');
toTopButton.addEventListener('click', function() {
smoothScroll('#header', 1000);
});
以上代码中,我们定义了一个smoothScroll函数,该函数接受两个参数:目标元素(target)和动画时间(duration)。在函数内部,我们首先获取目标元素的位置和当前页面的位置,然后计算出两者之间的距离。接着,我们定义了一个animation函数,该函数用于执行平滑滚动动画。在animation函数内部,我们使用了requestAnimationFrame方法,该方法用于执行动画。
<a href="#header">返回顶部</a>以上代码中,我们使用了a标签,并设置了href属性,该属性的值为目标元素的id。当用户点击链接时,页面将自动跳转到目标元素所在的位置。
本文为翻滚的胖子原创文章,转载无需和我联系,但请注明来自猿教程iskeys.com
