zoukankan      html  css  js  c++  java
  • 突发奇想,JavaScript模仿下载进度条效果

    不定时的更新,这一次采用JavaScript 模仿下载进度条效果。原理:两个div嵌套,里面的宽度0,外部自己随便定义,采用 setInterval() 函数增加 里面的div 的 width的值,使其背景色慢慢平铺开来,同时增加一个计数值“index” 表示进度。采用

     window.getComputedStyle()函数获取宽度.

    直接show code:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <style type="text/css">
            #fa{
                 600px;
                height: 50px;
                margin: 100px auto;
                background-color:#ffffff;
                border: 0.5px solid #999999;
                border-radius: 1px;
                box-sizing: content-box;
            }
            #ch{
                 0px;
                height: 50px;
                background-color: pink;
                text-align: right;
                color: green;
                line-height: 50px;
                box-sizing: content-box;
            }
        </style>
    </head>
    <body>
            <div id="fa">
            <div id="ch">
    
            </div>
            </div>
    
    <script type="text/javascript">
        window.onload=function () {
            var ta_length=600;  //fa 的宽
            var ta_time=200;// 走到头的时间
            var ta_min=20;// 走一步的速度
    
            Ago(ta_length,ta_time,ta_min); //调用函数
    
        function Ago(ta_length,ta_time,ta_min) {
    
               var  elem=document.getElementById("ch"); //获取ch
               var fa=document.getElementById("fa");
               var stepLength=ta_length/ta_time;
               var cover=0;
               var index=0;
                alert("开始下载");
              var step=function() {
                       index+=0.5;
                   if (cover+stepLength<=ta_length){
                       elem.style.width=parseFloat(getStyle(elem,'width'))+stepLength+'px'; //获取的宽度与每一步stapLength相加
    
                       elem.innerHTML=index+"%";// 计数值
    
                       cover+=stepLength; // ch的宽度增加
                          
                            if (index==100){
                                elem.style.backgroundColor="green";//百分百后背景颜色变化
                            }
                   }
                   else {
                       fa.style.border="0px";
                       clearInterval(IntervalId);
                       elem.style.border="1px solid green";
                       elem.innerHTML=" ";
                       alert("下载完成");
                   }
               }
            var IntervalId=setInterval(step,ta_min);
        }
        function getStyle(elem,cssname) {
            if(window.getComputedStyle){
                return window.getComputedStyle(elem)[cssname] //获取ch 的宽度
            }else{
                return elem.currentStyle[cssname];
            }
        }
        }
    </script>
    </body>
    </html>

       您可以:     点击这里查看效果

  • 相关阅读:
    【XSY3309】Dreamweaver 高斯消元 拉格朗日插值
    【LUOGU???】WD与地图 整体二分 线段树合并
    【CSA49F】【XSY3317】card 博弈论 DP
    【CSA72G】【XSY3316】rectangle 线段树 最小生成树
    【CSA49G】【XSY3315】jump DP
    【集训队作业2018】【XSY3372】取石子 DP
    【LUOGU???】WD与数列 sam 启发式合并
    【LUOGU???】WD与积木 NTT
    【AGC030F】Permutation and Minimum DP
    【AGC030D】Inversion Sum DP
  • 原文地址:https://www.cnblogs.com/wxhhts/p/9520245.html
Copyright © 2011-2022 走看看