关于网站回到顶部的实现

2017-07-16  本文已影响0人  高家小威

在我们浏览网页的时候,当页面下拉到一个可视窗口以下时,大多数网站会在页面右侧边栏出现一个“回到顶部”的小按钮,以方便我们回到本页面最顶端,避免繁琐的滚动鼠标滚轮或者滚动条。

那这种回到顶部的效果是怎么实现的?

1.无滚动效果,也就是直接到顶部,视觉效果差,但是快速,点一下就立马回到顶部。例如:京东

2.有滚动效果,用户体验好,这也是目前多数网站采用的滚动回顶的方式。例如:淘宝为例:
下面重点讲一下第二种,敲黑板!!!

这个效果剖析原理无非是定时:setinterval

下面我们来实现一下。
先布局,将置顶的小块固定在某个位置
点击小div,实现滚动回到顶部

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>回到顶部</title>
    <style>
        div {
            width: 30px;
            height: 30px;
            background: rgba(0,0,0,0.3);
            color: #fff;
            text-align: center;
            line-height: 30px;
            position: fixed;
            right:0;
            top:500px;
        }
    </style>
    <script>
        window.onload = function () {
            var oDiv = document.querySelector('div');
            window.onscroll = function () {
                var iScroll = document.documentElement.scrollTop || document.body.scrollTop;
                oDiv.onclick = function () {
                    var start=iScroll;                  //开始的滚动距离
                    var end =0;                         //结束的滚动距离
                    var total=end-start;                //移动的距离差
                    var time=500;                      //移动的总时长
                    var count= Math.ceil(time / 30);   //定时器走500毫秒需要走几步的总步数
                    var n=0;                            //初始化n.开启定时器后让 n++
                    var timer = null;                   //定义定时器
                    timer=setInterval(function () {
                        n++;
                        if(n==count){
                            clearInterval(timer);
                        }
                        console.log(count)
                        if(document.documentElement.scrollTop){
                            document.documentElement.scrollTop=start + n * total / count;
                            // total/count意思是每30秒,走一步移动的距离
                        }else{
                            document.body.scrollTop=start + n * total / count;
                        }
                    },30);

                }
            }
        }
    </script>
</head>
<body style="height: 3000px;">
    <div>↑</div>
</body>
</html>
上一篇下一篇

猜你喜欢

热点阅读