当前位置: 代码网 > it编程>编程语言>Javascript > 如何用纯js实现返回页面顶部功能

如何用纯js实现返回页面顶部功能

2024年07月02日 Javascript 我要评论
1. 需求场景点击页面中的浮标,页面自动返回顶部。2. 需求实现分析直接使用 body 或者 documentelement 的 scrolltop 属性,直接设置为 0;就能返回页面顶部;使用 wi

1. 需求场景

点击页面中的浮标,页面自动返回顶部。

2. 需求实现分析

  • 直接使用 body 或者 documentelement 的 scrolltop 属性,直接设置为 0;就能返回页面顶部;
  • 使用 window.scrollto 方法,实现返回页面顶部。

3. 方案一:直接返回顶部

3.1 代码逻辑分析

  • 获取返回顶部按钮;
  • 当页面滚动时显示或隐藏返回顶部按钮;
    2.1 获取当前滚动的位置;
    2.2 判断是否超过设置的显示距离,超过就显示,否则就隐藏;
  • 滚动到顶部。

3.2 代码实现

      function scrolltotop({elem, speed = 5, top = 0, showdistance = 500, callback}) {
        // 获取返回顶部按钮
        let backtotopbutton = document.getelementbyid(elem);
        // 当页面滚动时显示或隐藏返回顶部按钮
        window.onscroll = function() {
          // 获取当前滚动的位置
          let currentscroll = document.documentelement.scrolltop || document.body.scrolltop;
          // 判断是否超过设置的显示距离,超过就显示,否则就隐藏
          if (currentscroll  > showdistance) {
            backtotopbutton.style.display = "block";
          } else {
            backtotopbutton.style.display = "none";
          }
        };
        // 滚动到顶部
        backtotopbutton.addeventlistener("click", function() {
          document.body.scrolltop = 0;
          document.documentelement.scrolltop = 0;
        });
      }

3.3 总结

  • 由于直接设置 scrolltop 为 0,因此执行过程不够平滑,直接返回顶部,体验不好!

4. 方案二:平滑滚动

4.1 代码实现分析

  • 获取返回顶部按钮;
  • 当页面滚动时显示或隐藏返回顶部按钮;
    2.1 获取当前滚动的位置;
    2.2 判断是否超过设置的显示距离,超过就显示,否则就隐藏;
  • 平滑滚动到顶部;
    3.1 获取当前滚动的位置;
    3.2 如果当前不在顶部,则开始滚动动画;
    3.3 到达指定位置,执行回调函数;
  • 滚动函数;
    4.1 获取当前滚动的位置;
    4.2 如果当前不在顶部,则开始滚动动画;
    4.3 控制滚动速度。

4.2 代码实现

     function scrolltotop({elem, speed = 5, top = 0, showdistance = 500, callback}) {
        // 获取返回顶部按钮
        let backtotopbutton = document.getelementbyid(elem);
        // 当页面滚动时显示或隐藏返回顶部按钮
        window.onscroll = function() {
          // 获取当前滚动的位置
          let currentscroll = document.documentelement.scrolltop || document.body.scrolltop;
          // 判断是否超过设置的显示距离,超过就显示,否则就隐藏
          if (currentscroll > showdistance) {
            backtotopbutton.style.display = "block";
          } else {
            backtotopbutton.style.display = "none";
          }
        };
        // 平滑滚动到顶部
        backtotopbutton.addeventlistener("click", function() {
          // 获取当前滚动的位置
          let currentscroll = document.documentelement.scrolltop || document.body.scrolltop;
          // 如果当前不在顶部,则开始滚动动画
          if (currentscroll > top) {
            window.requestanimationframe(smoothscroll); // 运行动画
          } else {
            // 到达指定位置,执行回调函数
            callback && callback();
          }
        });
		// 滚动函数
        function smoothscroll() {
          // 获取当前滚动的位置
          let currentscroll = document.documentelement.scrolltop || document.body.scrolltop;
          // 如果当前不在顶部,则开始滚动动画
          if (currentscroll > top) {
            window.requestanimationframe(smoothscroll);
            window.scrollto(0, currentscroll - (currentscroll / speed)); // 控制滚动速度
          }
        }
      }

4.3 总结

  • 实现了平滑滚动到顶部;
  • 在滚动完成后执行回调函数。

5. 注意

  • 使用css来添加一些过渡效果会让滚动更加平滑,并增强用户体验。可以添加以下css代码:
html {
  scroll-behavior: smooth;
}

总结 

到此这篇关于如何用纯js实现返回页面顶部功能的文章就介绍到这了,更多相关js返回页面顶部内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com