javascript 设置返回顶部的效果

动态效果要求:

点击按钮之后可以由快到慢地回到顶部,处于顶部位置时按钮消失,按钮位于页面的右下方

实现原理:

设置对返回顶部按钮的单机响应函数

在此函数内部定一个返回顶部计时器 returnTop

returnTop 内部设置一个变量 top 储存滚动条距离顶部的位置

returnTop 内部设置一个变量 v 储存一个数值,该数值为 -top/5

再令 document.documentElement.scrollTop 的数值为 ( top + v )

然后对 returnTop 定时器的执行间隔为30ms

如此每经过30ms,document.documentElement.scrollTop 的数值就会发生改变

此改变的值与 top 相关,top越大v越大,top越小v越小,从而达到实现点击按钮之后可以由快到慢地回到顶部

document.documentElement.scrollTop == 0 的时候设置清除计时器

代码展示:

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>demo1</title>
    <style>
        *{
            margin: 0;
            padding: 0;
        }

        body{
            width: auto;
            height: 3000px;
            background-image: linear-gradient(rgb(201, 200, 200),rgb(57, 56, 56));
            text-align: center;

            position: relative;
        }

        #btn{
            width: 65px;
            height: 65px;
            text-align: center;
            line-height: 65px;
            color: white;
            border: 1px solid black;
            background-color: gray;
            cursor: pointer;

            position: fixed;
            bottom: 20px;
            right: 20px;
        }
    </style>
</head>
<body>
    <h1>TOP</h1>
    <button id="btn">返回顶部</button>

    <script>
        window.onload = function(){
            //获取按钮
            var btn = document.getElementById("btn")
            //设置按钮点击后返回顶部
            btn.onclick  = function(){
                //设置计时器
                var returnTop = setInterval(function(){
                    //设置返回顶部距离
                    var top = document.documentElement.scrollTop
                    //设置速度差距
                    var v = Math.floor(-top/5)
                    document.documentElement.scrollTop = top + v
                    //清除计时器
                    if(top == 0){
                        clearInterval(returnTop)
                    }
                },30)
            }
            //调用是否隐藏按钮函数
            topGap()
            //设置当页面滚轮发生滚动时候的响应事件
            document.onscroll = function(){
                //调用是否隐藏按钮函数
                topGap()
            }
        }
        //设置是否隐藏按钮函数,判断scrollTop的数值,如果为零隐藏返回顶部按钮
        function topGap(){
            if(document.documentElement.scrollTop == 0){
                btn.style.display = "none"
            }else{
                btn.style.display = "block"
            }
        }
    </script>
</body>
</html>

效果展示:

返回顶部

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

O_oregou

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值