模仿进度条效果
进度条效果
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>
#progress{width: 400px; height: 30px; border: 1px solid black; position: relative;}
#fill{position: absolute; top: 0px; left: 0px; width: 0px; height: 30px; background-color: red}
#score{line-height: 30px; position: absolute; right: 0px}
</style>
<script>
/*
电影 1秒是24帧
人眼能识别的最小的时间间隔是18帧。
*/
window.onload = function(){
var oProgress = document.getElementById("progress");
var oFill = document.getElementById('fill');
var oScore = document.getElementById('score');
var speed = 2;
var timer = setInterval(function(){
var currentWidth = parseInt(getStyle(oFill, "width"));
//计算百分比
oScore.innerHTML = parseInt(currentWidth / 400 * 100) + "%";
if(currentWidth == 400){
clearInterval(timer);
}else{
oFill.style.width = currentWidth + speed + 'px';
}
}, 30);
}
/*---------------封装的获取当前有效属性函数的兼容写法--------*/
// 浏览器兼容写法
function getStyle(node, styleType){
return node.currentStyle ? node.currentStyle[styleType] : getComputedStyle(node)[styleType];
}
/*---------------封装的获取当前有效属性函数的兼容写法end--------*/
</script>
</head>
<body>
<div id = "progress">
<div id = 'fill'></div>
<span id = 'score'>0%</span>
</div>
</body>
</html>
浏览器效果:

仔细观看上面到最后的时候好像,没完全到头,下面代码是发现后修改的。
补充(略修改):
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>进度条</title> 6 <style> 7 #progress {width: 400px;height: 30px;border: 1px solid black;position:relative;} 8 #in {width:0px;height:30px;background:cyan;position:absolute;left:0;} 9 #num {line-height: 30px;position:absolute;right:0;} 10 </style> 11 <script> 12 window.onload = function(){ 13 var oIn = document.getElementById('in'); 14 var oNum = document.getElementById('num'); 15 //每次增长的速度 16 var speed = 2; 17 //设置计时器, 每隔30ms执行一次 18 var timer = setInterval(function(){ 19 //获取当前有效样式 20 var cur = parseInt(getStyle(oIn, 'width')); 21 //设置增加后的宽度 22 oIn.style.width = cur + speed + 'px'; 23 24 //计算增加后的百分数(整数)并输出到页面 25 oNum.innerHTML = parseInt((cur + speed) / 400 * 100)+ '%'; 26 27 //判断增加后的宽度是否增长到头 28 if(cur + speed == 400){ 29 //清除计时器 30 clearInterval(timer); 31 } 32 33 },30) 34 } 35 36 /*------------封装获取当前有效样式的函数-------------*/ 37 function getStyle(node, styleType){ 38 return node.currentStyle? node.currentStyle[styleType] : getComputedStyle(node)[styleType]; 39 } 40 /*------------封装获取当前有效样式的函数end-------------*/ 41 42 </script> 43 </head> 44 <body> 45 <div id="progress"> 46 <div id="in"></div> 47 <span id="num">0%</span> 48 </div> 49 </body> 50 </html>
浏览器效果:

通过上图,可以看出这次刚刚好。

浙公网安备 33010602011771号