第一题小demo-页面返回顶部案例

小黑子的页面返回顶部案例

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

实现原理:

  1. 通过position: fixed使按钮固定,再用display: none让按钮在顶部消失
  2. 给window绑定滚动事件,利用 document.documentElement.clientHeight获取可视窗口的高度,再if语句判断。如果document.documentElement.scrollTop滚动的距离大于页面可视高度的10分之一时就出现按钮。
  3. 给按钮赋予点击事件,设置间隔定时器30毫秒执行依次,在里面回调函数通过height减去speed(在不同高度时的速度,随着hieght的减小而减小)让可视窗口与页面顶部的距离缓慢减小,实现点击按钮之后可以由快到慢地回到顶部的效果

htlm部分:

<!DOCTYPE html>
<html lang="en">
<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>Document</title>
    <link rel="stylesheet" href="./返回顶部css.css">
    <script src="./返回顶部js.js"></script>
</head>
<body>
    <h1>小黑子的顶部</h1>
    <button id="btn">返回顶部</button>
</body>
</html>

css部分:

* {
    margin: 0;
    padding: 0;
}

html,body {
    height: 2000px;
    background-color: yellowgreen;
    text-align: center;
}

#btn {
    width: 80px;
    height: 50px;
    position: fixed;
    bottom: 10px;
    right: 5px;
    display: none;
}

js部分:

window.onload = function () {
    var pagelookheight = document.documentElement.clientHeight;//设置页面可视高度
    var obtn = document.getElementById("btn");//获取html的按钮元素

    //实现下拉部分有返回按钮,处于顶部位置时按钮消失
    window.onscroll = function () {
        item();
        function item() {
            var height = document.documentElement.scrollTop;//设置获取垂直滚动的距离
            if (height >= pagelookheight/10) //当垂直滚动的距离大于页面可视高度的10分之一时就出现按钮
            {
                obtn.style.display = "block";
            } 
            else {
                obtn.style.display = "none";
            }
        }
    }

    obtn.addEventListener("click", handler);//给按钮赋予点击事件
    function handler() {
        var time = setInterval(function () //设置间隔定时器
        {
            var back = document.documentElement.scrollTop;//设置滚动条距顶部距离
            var speed = Math.ceil(back / 4);//设置滚动条在不同高度时的速度,向上取整为了到顶而刷新清除定时器
            document.documentElement.scrollTop = back- speed; //scrollTop就减得从多到少,实现回到顶部的速度先快后慢,不会是匀速
            if (document.documentElement.scrollTop== 0) 
            {
                clearInterval(time);//在最顶部时,清除定时器,否则滑不下去
            }
        }, 30);
        //每30毫秒执行一次
    }
}

样式:
在这里插入图片描述
在这里插入图片描述
动态效果:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值