📜  角度路线更改滚动到顶部 - Javascript(1)

📅  最后修改于: 2023-12-03 15:11:57.129000             🧑  作者: Mango

介绍:角度路线更改滚动到顶部 - Javascript

在网页开发中,经常会使用“滚动到顶部”按钮来让用户快速返回网页的顶部。但是,这个按钮通常只有简单的显示和隐藏功能,对用户来说使用不够便捷。我们可以通过改变滚动条的速度和角度来实现更好的用户体验。本文将介绍如何使用Javascript实现角度路线更改滚动到顶部。

实现思路及代码分析
思路
  1. 获取“回到顶部”按钮的元素和页面高度
  2. 为按钮添加click事件,绑定回到顶部函数
  3. 利用requestAnimationFrame()实现平滑滚动效果
  4. 利用Math函数随机生成角度,使滚动路径曲线更加自然,达到更好的用户体验
代码分析
// 获取“回到顶部”按钮的元素和页面高度
const toTopBtn = document.querySelector('.to-top-btn');
const pageHeight = document.documentElement.scrollHeight || document.body.scrollHeight;

// 给按钮绑定click事件,调用回到顶部函数
toTopBtn.addEventListener('click', scrollToTop);

// 回到顶部函数
function scrollToTop() {
  // 利用requestAnimationFrame()实现平滑滚动效果
  const start = document.documentElement.scrollTop || document.body.scrollTop;
  const end = 0;
  const duration = 800;
  const startTime = new Date().getTime();
  const scroll = () => {
    const timeElapse = new Date().getTime() - startTime;
    let position = Math.floor(easeInOutQuad(timeElapse, start, end - start, duration));
    // 利用Math函数随机生成角度
    const angle = Math.floor(Math.random() * 3) + 1;
    // 计算滚动条的位置,使其按照角度路线曲线滚动
    position = position - angle;
    if (position <= 0) {
      window.scrollTo(0, 0);
      return;
    }
    window.scrollTo(0, position);
    if (timeElapse < duration) requestAnimationFrame(scroll);
  };
  requestAnimationFrame(scroll);
}

// 缓动函数,实现平滑滚动效果
function easeInOutQuad(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;
}
总结

通过改变滚动条的滚动路径,使之自然而流畅,可以提高用户对网页的满意度和使用体验。该功能通过Javascript实现,代码简单易懂,容易上手。