原生js给页面添加一键滚动到顶部按钮

来源:赵克立博客 分类: 前端开发 标签:js函数js特效发布时间:2019-05-04 13:50:01最后更新:2019-05-04 13:50:01浏览:614
版权声明:
本文为博主原创文章,转载请声明原文链接...谢谢。o_0。
更新时间:
2019-05-04 13:50:01
温馨提示:
学无止境,技术类文章有它的时效性,请留意文章更新时间,如发现内容有误请留言指出,防止别人"踩坑",我会及时更新文章

查看效果

<!DOCTYPE html>
<html lang="en">

<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
    <title>标题</title>
    <meta name="keywords" content="关键字" />
    <meta name="description" content="描述" />
    <style type="text/css">
    #toTop {
        width: 50px;
        height: 50px;
        background: rgba(0, 0, 0, 0.3);
        position: fixed;
        -moz-background-size: 50px 50px;
        background-size: 50px 50px;
        bottom: 75px;
        -moz-border-radius: 50%;
        border-radius: 50%;
        z-index: 999999;
        right: 50px;
        _position: absolute;
        _bottom: auto;
        _top: expression(eval(document.documentElement.scrollTop+document.documentElement.clientHeight-this.offsetHeight-75-(parseInt(this.currentStyle.marginTop, 10)||0)-(parseInt(this.currentStyle.marginBottom, 10)||0)));
        display: -webkit-box;
        display: -moz-box;
        display: -ms-flexbox;
        display: flex;
        -webkit-box-align: center;
        -moz-box-align: center;
        -ms-flex-align: center;
        align-items: center;
        -ms-flex-wrap: wrap;
        flex-wrap: wrap;
        -webkit-box-pack: center;
        -moz-box-pack: center;
        -ms-flex-pack: center;
        justify-content: center
    }

    #toTop.hide {
        display: none
    }

    #toTop:after {
        content: '';
        width: 15px;
        height: 15px;
        display: block;
        border: solid 2px #fff;
        border-right: none;
        border-bottom: none;
        -webkit-transform: rotate(45deg);
        -moz-transform: rotate(45deg);
        -ms-transform: rotate(45deg);
        transform: rotate(45deg);
        margin-top: 5px
    }
    </style>
</head>

<body>
    <div style="height: 300px;">
        正文
    </div>
    <div style="height: 300px;">
        正文
    </div>
    <div style="height: 300px;">
        正文
    </div>
    <div style="height: 300px;">
        正文
    </div>
    <div style="height: 300px;">
        正文
    </div>
    <div style="height: 300px;">
        正文
    </div>
    <div style="height: 300px;">
        正文
    </div>
    <div style="height: 300px;">
        正文
    </div>
    <div style="height: 300px;">
        正文
    </div>  
    <script type="text/javascript">
    (function(factory) {
        if (typeof define === 'function' && define.amd) {
            define(function() {
                return factory();
            })
        } else {
            factory().init();
        }
    })(function() {
        var di = document.createElement('a');
        di.id = 'toTop';
        di.title = '返回顶部';
        di.href = 'javascript:;';
        di.className = 'hide';
        document.getElementsByTagName('body')[0].appendChild(di);
        window.onscroll = function() {
            var top = document.documentElement.scrollTop || document.body.scrollTop;
            var toTop = document.getElementById("toTop");
            if (top > 100) {
                toTop.className = "";
            } else {
                toTop.className = "hide";
            }
        };
        var toTop = new function() {
            var Timer = null;

            function $id(id) {
                return typeof id == "string" ? document.getElementById(id) : id;
            };
            this.Init = function(objName) {
                $id(objName).onclick = function() {
                    var top = document.documentElement.scrollTop || document.body.scrollTop;
                    startNove();
                    return false;
                };
                var startNove = function() {
                    if (Timer) clearInterval(Timer);
                    Timer = setInterval(doMove, 30);
                };
                var doMove = function() {
                    var iSpeed = 0;
                    var top = document.documentElement.scrollTop || document.body.scrollTop;
                    iSpeed = (0 - top) / 5;
                    iSpeed = iSpeed > 0 ? Math.ceil(iSpeed) : Math.floor(iSpeed);
                    if (Math.abs(iSpeed) < 1 && Math.abs(0 - top) < 1) {
                        clearInterval(Timer);
                        Timer = null;
                    }
                    window.scrollTo(0, (top + iSpeed));
                };
            };
        };
        return {
            init: function() {
                toTop.Init("toTop");
            }
        }
    });
    </script>
</body>

</html>



微信号:kelicom QQ群:215861553 紧急求助须知
Win32/PHP/JS/Android/Python