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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • kali linux切换更新源_Kali Linux 更新源 操作完整版教程

    kali linux切换更新源_Kali Linux 更新源 操作完整版教程一、查看kali系统的更新源地址文件命令:vim/etc/apt/sources.list上面这是kali官方的更新源;拓展知识:一个完整的源包括:deb和deb-src;上图源地址是:http://http.kali.org/;图中的kali-rolling是kali目前最新的代号,kali有两个代号(codename):sana和kali-rolling。打开http://http.ka…

    2022年5月10日
  • Excel去除空行的各种方法_批量删除所有空行

    Excel去除空行的各种方法_批量删除所有空行本文转载至:https://baijiahao.baidu.com/s?id=1590204478648348952&wfr=spider&for=pc,需要详细信息可链接查看方法一

    2022年8月2日
  • lamda 表达式「建议收藏」

    lamda 表达式「建议收藏」Lamda表达式高阶语言中的lamda表达式,灵感来自于lamda演算。lamda演算包括一条变换规则(变量替换)和一条函数定义方式,通过带入和替换,对输入产生输出。Connect新用法connect连接信号槽connect(sender,&Sender::valueChanged,receiver,&Rece…

    2022年5月27日
  • Zabbix使用snmptrap方式监控vCenter Server「建议收藏」

    Zabbix使用snmptrap方式监控vCenter Server「建议收藏」Zabbix使用snmptrap方式监控vCenterServer6.5简介本人介绍如何通过snmptrap的方式发送vcenter上的告警到zabbixserver,并通过zabbixserver发送邮件告警通知,配置好后,邮箱收到的告警格式如下一、前置条件1)安装好zabbix-server,zabbix-server节点安装好net-snmp软件2)下载vCenterServer的mib文件登录vmware官网https://customerconnect.vmware.

    2022年8月20日
  • 搭建Eurake服务「建议收藏」

    搭建Eurake服务「建议收藏」Eureka注册中心Eureka的作用消费者该如何获取服务提供者具体信息?服务提供者启动时向eureka注册自己的信息eureka保存这些信息消费者根据服务名称向eureka拉取提供者信息如果有多个服务提供者,消费者该如何选择?服务消费者利用负载均衡算法,从服务列表中挑选一个消费者如何感知服务提供者健康状态?服务提供者会每隔30秒向EurekaServer发送心跳请求,报告健康状eureka会更新记录服务列表信息,心跳不正常会被剔除消费者就可以拉取到最新的信息

    2022年6月1日
  • QTreeWidget详解「建议收藏」

    QTreeWidget详解「建议收藏」树形结构在GUI中很常见,在Qt中,我们可以通过QTreeWidget类构造树形结构。本文对有关QTreeWidget的基本知识点进行了总结。

    2022年10月1日

发表回复

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

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