国瑞个人博客
首页 > Javascript > js加载进度条实现方法详解

js加载进度条实现方法详解

js加载进度条实现方法详解

 2019年07月13日 作者: 国瑞个人博客 547次浏览

现在很多网站会用到进入网站特效,到网页没有加载完成的时候,会有一个loding特效,加载完了之后才能看到页面,今天就带着做一个js进度条效果,今天要做的效果是纯js进度条加载,没有用到框架,方便大家进行深入理解:

首先我们要进行js进度条的布局

js进度条布局如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
</script>
<style type="text/css" id='css'>
    #progress {
        position: fixed;
        background: #000;
        top: 0;
        left: 0;
        width: 100%;
        height: 100%;
        z-index: 99999;
    }

    #progress p {
        width: 0px;
        height: 30px;
        border-radius: 3px;
        background: #ffcccc;
        color: #330000;
        font-size: 14px;
        font-weight: bold;
        line-height: 30px;
        text-align: center;
        overflow: hidden;
        font-family: 'Microsoft yahei';
        position: absolute;
        top: 50%;
        left: 50%;
        margin-top: -15px;
        margin-left: -250px;
    }

    body {
        overflow: hidden;
    }
</style>
</head>

<body>

    <div id='progress'>
        <p>0%</p>
    </div>
</body>

写完了之后,就要开始写js进度条加载的js代码了,代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
    var oP = document.getElementById('progress').getElementsByTagName('p')[0];
    var oCss = document.getElementById('css');

    function move(num) {
        clearInterval(oP.timer);
        oP.timer = setInterval(function () {
            if (parseInt(oP.innerHTML) < num) {
                var s = parseInt(oP.innerHTML) + 1;
                var w = 500 * s / 100;
                oP.innerHTML = s + '%';
                oP.style.width = w + 'px';
            } else {
                clearInterval(oP.timer);
                if (num == 100) {
                    oP.parentNode.parentNode.removeChild(oP.parentNode);
                    oCss.parentNode.removeChild(oCss);
                    var oScript = document.getElementsByClassName('pMove');
                    var length = oScript.length
                    for (var i = length - 1; i >= 0; i--) {
                        oScript[i].parentNode.removeChild(oScript[i]);
                    }
                }
            }
        }, 10);
    };
</script>

因为考虑到js执行是有先后的顺序的,这里大家一定要注意才行

js进度条全部源码展示:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
<style type="text/css" id='css'>
    #progress {
        position: fixed;
        background: #000;
        top: 0;
        left: 0;
        width: 100%;
        height: 100%;
        z-index: 99999;
    }

    #progress p {
        width: 0px;
        height: 30px;
        border-radius: 3px;
        background: #ffcccc;
        color: #330000;
        font-size: 14px;
        font-weight: bold;
        line-height: 30px;
        text-align: center;
        overflow: hidden;
        font-family: 'Microsoft yahei';
        position: absolute;
        top: 50%;
        left: 50%;
        margin-top: -15px;
        margin-left: -250px;
    }

    body {
        overflow: hidden;
    }
</style>
</head>

<body>

    <div id='progress'>
        <p>0%</p>
    </div>

    <script>
//js进度条代码
        var oP = document.getElementById('progress').getElementsByTagName('p')[0];
        var oCss = document.getElementById('css');

        function move(num) {
            clearInterval(oP.timer);
            oP.timer = setInterval(function () {
                if (parseInt(oP.innerHTML) < num) {
                    var s = parseInt(oP.innerHTML) + 1;
                    var w = 500 * s / 100;
                    oP.innerHTML = s + '%';
                    oP.style.width = w + 'px';
                } else {
                    clearInterval(oP.timer);
                    if (num == 100) { //js进度条代码等于100表示加载完成
                        oP.parentNode.parentNode.removeChild(oP.parentNode);
                        oCss.parentNode.removeChild(oCss);
                        var oScript = document.getElementsByClassName('pMove');
                        var length = oScript.length
                        for (var i = length - 1; i >= 0; i--) {
                            oScript[i].parentNode.removeChild(oScript[i]);
                        }
                    }
                }
            }, 10);
        };
    </script>
</body>

<script class='pMove'>
    move(100); //执行到body,表示js进度条已经加载完成,遮罩层退场
</script>

js进度条原理解析:
这里我们可以看到,进度条默认是0开始的,每走到一个地方,就会执行一个move函数,函数中有个数值,这个数值其实就是进度条走了多少了,我们可以去这样的分析,因为网站源代码是从上往下依次加载的,所以我们是不是就可以认为,让网页加载完成之后,页面加载进度就是100%了呢,我们在后面加上一个move(100),正好就是执行完了,所以这个方法是非常巧妙的。
本文转载至:
https://www.huangguorui.cn/javascript/176.html

百度已收录

点击快速分享:

以上就是国瑞前端个人博客带来的是《js加载进度条实现方法详解》,感谢您的观看!

如果没有特殊的说明,本文即为国瑞前端博客原创(www.huanggr.cn),欢迎读者转载并保留本站版权!https://www.huanggr.cn/1792.html

「专业前端博客,如果觉得我的文章对您有用,请帮助本站成长」

赞( 41 ) 打赏

谢谢你请我吃鸡腿*^_^*

支付宝
微信
41

谢谢你请我吃鸡腿*^_^*

支付宝
微信

上一篇:

下一篇:

相关文章:

共有 0 条评论

博客简介

国瑞个人博客: https://www.huanggr.cn/,我们关注Web前端开发技术,web前端开发,移动前端开发,前端资讯,同时分享前端资源和工具等,期待你的参与,了解更多..

博主独立研发主题:

本站唯一QQ群

加入国瑞个人博客QQ群

本群为学习探讨群,主要和前端相关,欢迎广大前端(抱有学习目的均可)爱好者加入!广告请勿添加!

升级版本

web前端开发博客,基于vue脚手架制作的前端博客正在制作中,尽情期待,目前示例的代码位于此处

最新版本(尽请期待)-web前端开发博客

精彩评论

本站主要提供服务

二年web前端开发博客,本站专注提供web资源下载,技术问题解答,经验分享,也提供新手的web技术指导,二年前端个人博客,期待你的加入!

站点统计

  • 文章总数: 276 篇
  • 草稿数目: 54 篇
  • 分类数目: 26 个
  • 页面总数: 16 个
  • 评论总数: 243 条
  • 链接总数: 10 个
  • 标签总数: 107 个
  • 建站时间: 839 天
  • 注册用户: 668 人
  • 访问总量: 8824319 次
  • 最近更新: 2019年8月9日
-->