js 做返回顶部效果

js 做返回顶部效果涉及的知识点: font-awesome字体图标;使用的cdn。 window.onload窗口加载完成事件;如果js代码写在body标签之前,则所有的js都要写在window.onload的事件中;即等待窗口加载完成之后再执行! window.onscroll窗口滚动事件 窗口滚动的距离      document.documentEleme…

大家好,又见面了,我是你们的朋友全栈君。

涉及的知识点:

  1. font-awesome字体图标;使用的cdn。

  2. window.onload 窗口加载完成事件;如果js代码写在body标签之前,则所有的js都要写在window.onload的事件中;即等待窗口加载完成之后再执行!

  3. window.onscroll 窗口滚动事件

  4. 窗口滚动的距离

          document.documentElement.scrollTop   ==>>  非IE滚动的距离

          document.body.scrollTop  ==>>  IE滚动的距离

     5. 定时器 setInterval 做返回顶部的动画效果

     6. 清除定时器

 

实现步骤:

  1. 注册窗口滚动事件

  2. 滚动离顶部的距离大于300时,显示ICON

  3. 注册点击事件,返回顶部 ==>> 即设置scrollTop 的值为0

  4. 用定时器做返回顶部的滚动效果

完整代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>返回顶部效果</title>
    <link rel="stylesheet" href="https://cdn.bootcss.com/font-awesome/4.7.0/css/font-awesome.min.css">
    <style type="text/css">
        body{
            margin: 0;
            padding: 0;
        }
        #returnTop{
            position: fixed;
            right: 50px;
            bottom: 100px;
        }
    </style>
    <script type="text/javascript">
        window.onload = function(){
            // 1.注册窗口滚动事件
            window.onscroll = function(){
                // 找到返回顶部的ICON
                var returnTopICON = document.getElementById("returnTop");
                //非IE滚动的距离
                //console.log(document.documentElement.scrollTop);
                //IE滚动的距离
                //console.log(document.body.scrollTop);

                // Math.max 取非IE和IE两个滚动距离的最大值
                var scrollDistance = Math.max(document.documentElement.scrollTop, document.body.scrollTop);
                // 2. 滚动离顶部的距离大于300时,显示ICON
                if(scrollDistance > 300){
                    returnTopICON.style.display = 'block';
                }else{
                    returnTopICON.style.display = 'none';
                }
            }

            //3. 注册点击事件,返回顶部 ==>> 即设置scrollTop 的值为0
            var returnTopICON = document.getElementById("returnTop");
            returnTopICON.onclick = function(){
                // 直接设置为0,是没有过渡效果的
                // document.documentElement.scrollTop = 0;
                // document.body.scrollTop = 0;

                // 4. 用定时器做返回顶部的滚动效果
                var dsj = setInterval(function(){
                    var distance = Math.max(document.documentElement.scrollTop, document.body.scrollTop);
                    distance -= 80;
                    if(distance <= 0){          
                        //如果滚动的距离 <= 0 时,清除掉定时器,否则点击图标滚动到顶部后,不能往下拉,一拉就又滚动到顶部
                        clearInterval(dsj);
                    }else{
                        document.documentElement.scrollTop = distance;
                        document.body.scrollTop = distance;
                    }                    
                },40);

            }
        }
    </script>
</head>
<body>
    <div style="background: firebrick;height: 500px;">

    </div>
    <div style="height: 2000px;background: gainsboro">
        <p id="returnTop" style="display: none">
            <i class="fa fa-chevron-up fa-3x"></i>
        </p>
    </div>    
</body>
</html>

 

效果:

js 做返回顶部效果

 

文章仅为本人学习过程的一个记录,仅供参考,如有问题,欢迎指出!

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

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/158404.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 用GHOST备份ubuntu系统

    用GHOST备份ubuntu系统
    由于在折腾ubuntu系统过程中经常出错(有一次由于更改分辨率导致黑屏,折腾了大半夜才修复好),于是特想能够找到一种简便有效的备份方法。

    上网一搜,老鸟们都说用tar备份。搜到了命令,复制下来,往终端上一贴,能进行,可是结尾时总出错。几个版本的命令都不行。经研究和上网搜索,搞明白这命令在纯文本(纯命令)下才行,桌面下根本不行(估计那些网上的tar备份者也是人云亦云,自己根本没试过)。

    Ctrl+Alt+F2进入纯命令界面,一片漆黑的背景上几个字母,根本

    2022年9月5日
    2
  • 大型视频监控存储方式_私人云存储解决方案

    大型视频监控存储方式_私人云存储解决方案一、背景描述在建设和谐社会的环境下,国家对很多单位的视频监控系统提出了更高的要求,要求他们把视频监控录像保存更长的时间,要求视频监控的画面更加清晰一点;这些要求的提出,导致原有视频监控系统的存储空间不能满足最新的需求,需要一个更大的存储空间来保存视频录像,如何给原有的监控系统进行存储空间的扩容,以及如何满足将来进一步扩容的需求,正在成为系统集成商和客户的难题。AXUS公司针对中国市场进行了一…

    2022年10月7日
    0
  • vue2使用animate css[通俗易懂]

    vue2使用animate css[通俗易懂]vue2使用animatecss先上几个链接vue插件大集合:awesome-vuevue2插件:vue2-animate:vue2-animatevue2插件vue2-animateDEMO:vue2-animatedemo:vue2-animate-demo我想用过animatecss的都知道这是一个极其简单而又酷炫的css动画库,但是我想在vue2中使用anima

    2022年7月12日
    16
  • JavaScript语言基础知识7

    JavaScript语言基础知识7

    2022年1月7日
    37
  • matlab:lena图像在空域和频域的均匀滤波

    matlab:lena图像在空域和频域的均匀滤波文章目录前言一、空域滤波二、频域滤波三,matlab代码结果前言卷积:函数空间域的卷积的傅里叶变换是函数傅里叶变换的乘积。对应地,频率域的卷积与空间域的乘积存在对应关系。给定频率域滤波器,可对其进行傅里叶逆变换得到对应的空域滤波器;滤波在频域更为直观,但空域适合使用更小的滤波模板以提高滤波速度。因为相同尺寸下,频域滤波器效率高于空域滤波器,故空域滤波需要一个更小尺寸的模板近似得到需要的滤波结果。一、空域滤波将模板在图像中逐像素移动,将卷积核的每个元素分别和图像矩阵对应位置元素相乘并将结果累加,

    2022年6月19日
    35
  • python设置时间过期改变状态_Python Redis设置过期时间「建议收藏」

    python设置时间过期改变状态_Python Redis设置过期时间「建议收藏」默认情况下,某个键的存在是没有时效性的,即在明确删除该键之前,该键会一直有效。当然在创建字符串数据时是可以指定时效的,也可以在键创建后修改时效属性,如让该键的有效期为5秒,到了时间该键便会自动被删除。下面的代码演示了一个键在设定时效后自动被删除的情况:importtime,redisr=redis.Redis(host=’10.20.17.13′,port=6379,db=0)…

    2022年9月26日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号