JS 页面滚动,顶部显示加载进度

实现思路:(将已经滚动的高度 / 可滚动的高度)* 100

效果:

image.png

案例:

<!DOCTYPE HTML>
<html>
    <header>
        <meta charset="utf-8">
        <!--
            @author: SM
            @desc: 滚动页面顶部显示滚动条,实现思路:(将已经滚动的高度 / 可滚动的高度)* 100
        -->
        <title>滚动进度条</title>
        <style type="text/css"> 
            * {
                margin: 0;
                padding: 0;
            }
            
            /*
                滚动条距离
            */
            .scrollCls {
                position: fixed;
                top: 0;
                left: 0;
                height: 3px;
                background-color: #0A74DA;
            }
        </style>
    </header>
    <body>
        
        <div class="scrollCls" id="scrollInfo"></div>
        
        <div class="divInfo">
            1这是一个div,滚动查看效果 <br/>
            这是一个div,滚动查看效果 <br/>
            这是一个div,滚动查看效果 <br/>
            这是一个div,滚动查看效果 <br/>
            这是一个div,滚动查看效果 <br/>
            这是一个div,滚动查看效果 <br/>
            这是一个div,滚动查看效果 <br/>
            这是一个div,滚动查看效果 <br/>
            这是一个div,滚动查看效果 <br/>
            这是一个div,滚动查看效果 <br/>
            这是一个div,滚动查看效果 <br/>
            这是一个div,滚动查看效果 <br/>
            这是一个div,滚动查看效果 <br/>
            这是一个div,滚动查看效果 <br/>
            这是一个div,滚动查看效果 <br/>
            这是一个div,滚动查看效果 <br/>
            这是一个div,滚动查看效果 <br/>
            这是一个div,滚动查看效果 <br/>
            这是一个div,滚动查看效果 <br/>
            这是一个div,滚动查看效果 <br/>
            这是一个div,滚动查看效果 <br/>
            这是一个div,滚动查看效果 <br/>
            这是一个div,滚动查看效果 <br/>
            这是一个div,滚动查看效果 <br/>
            这是一个div,滚动查看效果 <br/>
            这是一个div,滚动查看效果 <br/>
            这是一个div,滚动查看效果 <br/>
            这是一个div,滚动查看效果 <br/>
            这是一个div,滚动查看效果 <br/>
            这是一个div,滚动查看效果 <br/>
            这是一个div,滚动查看效果 <br/>
            这是一个div,滚动查看效果 <br/>
            这是一个div,滚动查看效果 <br/>
            这是一个div,滚动查看效果 <br/>
            这是一个div,滚动查看效果 <br/>
            这是一个div,滚动查看效果 <br/>
            这是一个div,滚动查看效果 <br/>
            这是一个div,滚动查看效果 <br/>
            这是一个div,滚动查看效果 <br/>
            这是一个div,滚动查看效果 <br/>
            这是一个div,滚动查看效果 <br/>
            这是一个div,滚动查看效果 <br/>
            这是一个div,滚动查看效果 <br/>
            这是一个div,滚动查看效果 <br/>
            这是一个div,滚动查看效果 <br/>
            这是一个div,滚动查看效果 <br/>
            这是一个div,滚动查看效果 <br/>
            这是一个div,滚动查看效果 <br/>
            这是一个div,滚动查看效果 <br/>
            这是一个div,滚动查看效果 <br/>
            这是一个div,滚动查看效果 <br/>
            这是一个div,滚动查看效果 <br/>
            这是一个div,滚动查看效果 <br/>
            这是一个div,滚动查看效果 <br/>
            这是一个div,滚动查看效果 <br/>
            这是一个div,滚动查看效果 <br/>
            这是一个div,滚动查看效果 <br/>
            这是一个div,滚动查看效果 <br/>
            这是一个div,滚动查看效果 <br/>
            这是一个div,滚动查看效果 <br/>
            这是一个div,滚动查看效果 <br/>
            这是一个div,滚动查看效果 <br/>
            这是一个div,滚动查看效果 <br/>
            这是一个div,滚动查看效果 <br/>
            这是一个div,滚动查看效果 <br/>
            这是一个div,滚动查看效果 <br/>
            这是一个div,滚动查看效果 <br/>
            这是一个div,滚动查看效果 <br/>
            这是一个div,滚动查看效果 <br/>
            这是一个div,滚动查看效果 <br/>
            这是一个div,滚动查看效果 <br/>
            这是一个div,滚动查看效果 <br/>
            这是一个div,滚动查看效果 <br/>
            这是一个div,滚动查看效果 <br/>
            这是一个div,滚动查看效果 <br/>
            这是一个div,滚动查看效果 <br/>
            这是一个div,滚动查看效果 <br/>
            这是一个div,滚动查看效果 <br/>
            这是一个div,滚动查看效果 <br/>
            这是一个div,滚动查看效果 <br/>
            这是一个div,滚动查看效果 <br/>
            这是一个div,滚动查看效果 <br/>
            这是一个div,滚动查看效果 <br/>
            这是一个div,滚动查看效果 <br/>
            这是一个div,滚动查看效果 <br/>
            这是一个div,滚动查看效果 <br/>
            这是一个div,滚动查看效果 <br/>
            这是一个div,滚动查看效果 <br/>
            这是一个div,滚动查看效果 <br/>
            这是一个div,滚动查看效果 <br/>
            这是一个div,滚动查看效果 <br/>
            这是一个div,滚动查看效果 <br/>
            这是一个div,滚动查看效果 <br/>
            这是一个div,滚动查看效果 <br/>
            这是一个div,滚动查看效果 <br/>
            这是一个div,滚动查看效果 <br/>
            这是一个div,滚动查看效果 <br/>
            这是一个div,滚动查看效果 <br/>
        </div>
        
        <script>
            //
            window.onload = function(){
                // 设置效果
                function scrollDy(){
                    // 已经滚动距离
                    var sHeight = getScrollTop();
                    // 占比
                    var bl = Math.min((sHeight / scrollTotal) * 100, 100);
                    // 设置
                    scrollEl.style.width = bl + '%'
                }
                // 可滚动的总高度
                var scrollTotal = getScrollHeight() -  getWindowHeight();
                //
                var scrollEl = document.getElementById('scrollInfo')
                // 监听滚动事件
                window.onscroll = function(){
                    scrollDy();
                }
                // 初始化设置滚动
                scrollDy();
            }
            
            // 已经滚动距离
            function getScrollTop(){
              var scrollTop = 0, bodyScrollTop = 0, documentScrollTop = 0;
              if(document.body){
                bodyScrollTop = document.body.scrollTop;
              }
              if(document.documentElement){
                documentScrollTop = document.documentElement.scrollTop;
              }
              scrollTop = (bodyScrollTop - documentScrollTop > 0) ? bodyScrollTop : documentScrollTop;
              return scrollTop;
            }
            // 文档的总高度
            function getScrollHeight(){
              var scrollHeight = 0, bodyScrollHeight = 0, documentScrollHeight = 0;
              if(document.body){
                bodyScrollHeight = document.body.scrollHeight;
              }
              if(document.documentElement){
                documentScrollHeight = document.documentElement.scrollHeight;
              }
              scrollHeight = (bodyScrollHeight - documentScrollHeight > 0) ? bodyScrollHeight : documentScrollHeight;
              return scrollHeight;
            }
            // 窗体高度
            function getWindowHeight(){
              var windowHeight = 0;
              if(document.compatMode == "CSS1Compat"){
                windowHeight = document.documentElement.clientHeight;
              }else{
                windowHeight = document.body.clientHeight;
              }
              return windowHeight;
            }
        </script>
    </body>
</html>
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1、通过CocoaPods安装项目名称项目信息 AFNetworking网络请求组件 FMDB本地数据库组件 SD...
    阳明AI阅读 16,033评论 3 119
  • 每个人都一定会需要那种时间 忙完这一整天这样那样的事后 回到家 洗个澡 直接倒在床上 关上灯 放着轻松又慢悠的音乐...
    就是嬛嬛阅读 399评论 0 1
  • 英超第十一轮的红蓝大战由蓝军的的一球小胜宣告结束。 1.阵容 这场比赛拥有足够吸引人们的眼球的元素。马塔、卢卡库、...
    闫哥说球阅读 111评论 0 2
  • 我们在生活中或多或少会被负面情绪所影响,学会做情绪的主人,修行在个人,《超有效的情绪整理术1:一针见血解决烦恼》...
    佳凝暖茶阅读 272评论 0 0
  • 再见时我们心照不宣不提当年,遗憾的是明白了这些以后的我再也不是他当年的那个同桌了。 我也没有机会知道当年的小小男孩...
    景异_阅读 383评论 0 2