小功能1:多种方法实现网页加载进度条

方法一:使用定时器

            说明:定时器中放一个全屏的背景色,并添加一个gif图片,规定n秒后再隐藏此背景,给后台加载留一定时间。

            缺点:当本地已有缓存时,还是会执行此定时器,体验不佳

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <title>定时器进度条</title>
        <script src="js/jquery-1.11.3.js" type="text/javascript" charset="utf-8"></script>
        <script type="text/javascript">
            $(function(){
                $("body").append('<div class="loading"><img src="img/Flower.gif" ></div>');
                setTimeout(function(){
                    $(".loading").fadeOut();
                },3000)
            })
        </script>
        <style type="text/css">
            .loading {
                width: 100%;
                height: 100%;
                position: fixed;
                top: 0;
                left: 0;
                background: #fff;
            }
            .loading img{
                position: absolute;
                top: 0;
                left: 0;
                bottom: 0;
                right: 0;
                margin: auto;
            }
        </style>
    </head>
    <body>
        
        <img src="http://img1.imgtn.bdimg.com/it/u=3794341811,198002972&fm=26&gp=0.jpg" >
        <img src="http://img0.imgtn.bdimg.com/it/u=3081910561,4232742603&fm=26&gp=0.jpg" >
        <img src="http://img2.imgtn.bdimg.com/it/u=3924851449,159537211&fm=26&gp=0.jpg" >
        <img src="http://img1.imgtn.bdimg.com/it/u=4135296269,1136301264&fm=26&gp=0.jpg" >
        <img src="http://img1.imgtn.bdimg.com/it/u=2623748191,2154445708&fm=26&gp=0.jpg" >
        <img src="http://img5.imgtn.bdimg.com/it/u=4199878529,2086225900&fm=26&gp=0.jpg" >
        <img src="http://img5.imgtn.bdimg.com/it/u=4015368002,1586221549&fm=26&gp=0.jpg" >
        <img src="http://img5.imgtn.bdimg.com/it/u=2721573031,3342097622&fm=26&gp=0.jpg" >
        <img src="http://img2.imgtn.bdimg.com/it/u=246009171,2070901793&fm=26&gp=0.jpg" >
        <img src="http://img5.imgtn.bdimg.com/it/u=2721573031,3342097622&fm=26&gp=0.jpg" >
        <img src="http://img2.imgtn.bdimg.com/it/u=56560423,3204706921&fm=26&gp=0.jpg" >
</html>

 

方法二:document.onreadystatechange监控加载状态

           说明:document.onreadystatechange(页面加载状态改变的事件);              

    document.readyState:

    状态值:uninitialized(还未开始载入),loading(载入中),interactive(已加载,文档与用户可以开始交互),complete(载入完成)。

    下面代码中用css3绘制了一个预加载时显示的小动画,当然也可引用已有的图片。核心代码为划线部分

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <title>进度条-readyState</title>
        <script src="js/jquery-1.11.3.js" type="text/javascript" charset="utf-8"></script>
        <script type="text/javascript">
            $(function(){
                document.onreadystatechange = function(){
                    if(document.readyState == "complete"){
                        $(".loading").fadeOut();
                    }
                }
            })
        </script>
        <style type="text/css">
            .loading {
                width: 100%;
                height: 100%;
                position: fixed;
                top: 0;
                left: 0;
                background: #fff;
            }
            
            /* 绘制进度条图形 */
            .myicon {
                position: absolute;
                top: 0;
                left: 0;
                bottom: 0;
                right: 0;
                margin: auto;
                width: 50px;
                height: 30px;
                
            }
            .myicon-item {
                width: 5px;
                height: 10px;
                background-color: green;
                float: left;
                margin-right: 5px;
                -webkit-animation: myicon 1s infinite;
                        animation: myicon 1s infinite;
            }
            .item1 {
                -webkit-animation-delay: -1s;
                        animation-delay: -1s;
            }
            .item2 {
                -webkit-animation-delay: -0.9s;
                        animation-delay: -0.9s;
            }
            .item3 {
                -webkit-animation-delay: -0.8s;
                        animation-delay: -0.8s;
            }
            .item4 {
                -webkit-animation-delay: -0.7s;
                        animation-delay: -0.7s;
            }
            .item5 {
                -webkit-animation-delay: -0.6s;
                        animation-delay: -0.6s;
            }
            @-webkit-keyframes myicon {
                0% 100%{
                    -webkit-transform: scaleY(1);
                            transform: scaleY(1);
                }
                50% {
                    -webkit-transform: scaleY(3);
                            transform: scaleY(3);
                }
            }
            @keyframes myicon {
                0% 100%{
                    -webkit-transform: scaleY(1);
                            transform: scaleY(1);
                }
                50% {
                    -webkit-transform: scaleY(3);
                            transform: scaleY(3);
                }
            }
        </style>
    </head>
    <body>
        <div class="loading">
            <div class="myicon">
                <div class="myicon-item item1"></div>
                <div class="myicon-item item2"></div>
                <div class="myicon-item item3"></div>
                <div class="myicon-item item4"></div>
                <div class="myicon-item item5"></div>
            </div>
        </div>
        
        <img src="http://img1.imgtn.bdimg.com/it/u=3794341811,198002972&fm=26&gp=0.jpg" >
        <img src="http://img0.imgtn.bdimg.com/it/u=3081910561,4232742603&fm=26&gp=0.jpg" >
        <img src="http://img2.imgtn.bdimg.com/it/u=3924851449,159537211&fm=26&gp=0.jpg" >
        <img src="http://img1.imgtn.bdimg.com/it/u=4135296269,1136301264&fm=26&gp=0.jpg" >
        <img src="http://img1.imgtn.bdimg.com/it/u=2623748191,2154445708&fm=26&gp=0.jpg" >
        <img src="http://img5.imgtn.bdimg.com/it/u=4199878529,2086225900&fm=26&gp=0.jpg" >
        <img src="http://img5.imgtn.bdimg.com/it/u=4015368002,1586221549&fm=26&gp=0.jpg" >
        <img src="http://img5.imgtn.bdimg.com/it/u=2721573031,3342097622&fm=26&gp=0.jpg" >
        <img src="http://img2.imgtn.bdimg.com/it/u=246009171,2070901793&fm=26&gp=0.jpg" >
        <img src="http://img5.imgtn.bdimg.com/it/u=2721573031,3342097622&fm=26&gp=0.jpg" >
        <img src="http://img2.imgtn.bdimg.com/it/u=56560423,3204706921&fm=26&gp=0.jpg" >
</html>

方法三:给页面中重要节点后添加js代码,改变进度条显示(以显示在页面头部的进度条为例)

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <title>进度条-头部</title>
        <script src="js/jquery-1.11.3.js" type="text/javascript" charset="utf-8"></script>
        <style type="text/css">
            .loading {
                width: 100%;
                height: 100%;
                position: fixed;
                top: 0;
                left: 0;
                background: #fff;
            }
            .loading .progress {
                position: absolute;
                top: 0;
                left: 0;
                width: 0%;
                height: 3px;
                background-color: #f33;
            }
            
        </style>
    </head>
    <body>
        <div class="loading">
            <div class="progress"></div>
        </div>
        <img src="http://img1.imgtn.bdimg.com/it/u=3794341811,198002972&fm=26&gp=0.jpg" >
        <script type="text/javascript">
            $(".loading .progress").animate({width : "10%"},100)
        </script>
        <img src="http://img0.imgtn.bdimg.com/it/u=3081910561,4232742603&fm=26&gp=0.jpg" >
        <img src="http://img2.imgtn.bdimg.com/it/u=3924851449,159537211&fm=26&gp=0.jpg" >
        <script type="text/javascript">
            $(".loading .progress").animate({width : "30%"},100)
        </script>
        <img src="http://img1.imgtn.bdimg.com/it/u=4135296269,1136301264&fm=26&gp=0.jpg" >
        <img src="http://img1.imgtn.bdimg.com/it/u=2623748191,2154445708&fm=26&gp=0.jpg" >
        <script type="text/javascript">
            $(".loading .progress").animate({width : "50%"},100)
        </script>
        <img src="http://img5.imgtn.bdimg.com/it/u=4199878529,2086225900&fm=26&gp=0.jpg" >
        <img src="http://img5.imgtn.bdimg.com/it/u=4015368002,1586221549&fm=26&gp=0.jpg" >
        <script type="text/javascript">
            $(".loading .progress").animate({width : "70%"},100)
        </script>
        <img src="http://img5.imgtn.bdimg.com/it/u=2721573031,3342097622&fm=26&gp=0.jpg" >
        <img src="http://img2.imgtn.bdimg.com/it/u=246009171,2070901793&fm=26&gp=0.jpg" >
        <script type="text/javascript">
            $(".loading .progress").animate({width : "90%"},100)
        </script>
        <img src="http://img5.imgtn.bdimg.com/it/u=2721573031,3342097622&fm=26&gp=0.jpg" >
        <img src="http://img2.imgtn.bdimg.com/it/u=56560423,3204706921&fm=26&gp=0.jpg" >
        <script type="text/javascript">
            $(".loading .progress").animate({width : "100%"},100,function(){
                $(".loading").fadeOut();
            })
        </script>
</html>

方法四:实时监控页面中加载情况,显示响应百分比(页面加载进度慢,一般都是图片、视频、音频较多,以下以图片为例,根据图片加载进度显示页面加载百分比)

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <title>进度条-百分比</title>
        <script src="js/jquery-1.11.3.js" type="text/javascript" charset="utf-8"></script>
        <script type="text/javascript">
            $(function(){
                var sum = 0;
                var $img = $("body img");
                $img.each(function(i){
                    var proImage = new Image();
                    proImage.onload = function(){
                        proImage.onload = null;
                        sum++;
                        var progress = parseInt(sum/$img.length * 100);
                        $(".loading .progress b").text(""+progress + "%");
                        if(sum >= i){
                            $(".loading").fadeOut();
                        }
                    }
                    proImage.src = $img[i].src;//若将赋值放在onload之前,当页面第二次加载时,将直接赋src值,不会再执行onload事件
                })
            })
        </script>
        <style type="text/css">
            * {
                box-sizing: border-box;
            }
            .loading {
                width: 100%;
                height: 100%;
                position: fixed;
                top: 0;
                left: 0;
                background: #fff;
            }
            .loading .progress{
                position: absolute;
                top: 0;
                left: 0;
                bottom: 0;
                right: 0;
                margin: auto;
                width: 100px;
                height: 100px;
                text-align: center;
                line-height: 100px;
                font-size: 22px;
            }
            
            .loading .progress span {
                display: block;
                position: absolute;
                left: 10px;
                top: 10px;
                width: 80px;
                height: 80px;
                border-radius: 50%;
                -webkit-box-shadow: 0 3px 0 #666;
                        box-shadow: 0 3px 0 #666;
                -webkit-animation: myicon 1s infinite linear;
                        animation: myicon 1s infinite linear;
            }
            @-webkit-keyframes myicon {
                0% {
                    -webkit-transform: rotate(0deg);
                }
                100% {
                    -webkit-transform: rotate(360deg);
                }
            }
            @keyframes myicon {
                0% {
                    transform: rotate(0deg);
                }
                100% {
                    transform: rotate(360deg);
                }
            }
        </style>
    </head>
    <body>
        <div class="loading">
            <div class="progress">
                <span></span>
                <b>0%</b>
            </div>
        </div>
        <img src="http://img1.imgtn.bdimg.com/it/u=3794341811,198002972&fm=26&gp=0.jpg" >
        <img src="http://img0.imgtn.bdimg.com/it/u=3081910561,4232742603&fm=26&gp=0.jpg" >
        <img src="http://img2.imgtn.bdimg.com/it/u=3924851449,159537211&fm=26&gp=0.jpg" >
        <img src="http://img1.imgtn.bdimg.com/it/u=4135296269,1136301264&fm=26&gp=0.jpg" >
        <img src="http://img1.imgtn.bdimg.com/it/u=2623748191,2154445708&fm=26&gp=0.jpg" >
        <img src="http://img5.imgtn.bdimg.com/it/u=4199878529,2086225900&fm=26&gp=0.jpg" >
        <img src="http://img5.imgtn.bdimg.com/it/u=4015368002,1586221549&fm=26&gp=0.jpg" >
        <img src="http://img5.imgtn.bdimg.com/it/u=2721573031,3342097622&fm=26&gp=0.jpg" >
        <img src="http://img2.imgtn.bdimg.com/it/u=246009171,2070901793&fm=26&gp=0.jpg" >
        <img src="http://img5.imgtn.bdimg.com/it/u=2721573031,3342097622&fm=26&gp=0.jpg" >
        <img src="http://img2.imgtn.bdimg.com/it/u=56560423,3204706921&fm=26&gp=0.jpg" >
</html>

 笨鸟学习途中,有问题尽管提,谢谢

posted @ 2018-12-21 14:50  小白&小菜  阅读(4532)  评论(0编辑  收藏  举报
我是一个小菜鸟,飞呀飞呀,快飞高