php百分比进度条,写百分比进度条,一定会遇到的问题

本文介绍了如何使用CSS3和jQuery实现一个带有动态效果的百分比进度条。重点讨论了在JavaScript中处理百分比宽度的注意事项,以及如何通过伪元素和动画赋予进度条动态展示。同时,文章提供了完整的源码供读者实践。强调了在实现过程中解决问题的思维灵活性和对新技术的运用。
摘要由CSDN通过智能技术生成

这篇文章实现的百分比进度条,技术含量并不高,但着重想强调的是实现过程中应该引起注意的几个问题。

1、如果元素中有定义宽度,并且其值为百分比值如:.progressbar .pb_inner{width:1%;},则jquery中的$(".progressbar .pb_inner").css("width")获取到的值并非css中定义的1%; 而是经过计算后的值,实例中取到的值为:父元素的600px X 1%=6px(注意:在原生js中getComputedStyle()方法取得的值也是计算后的值!),而我们是用js通过以改变pb_inner的宽度百分比来实现的,并且在进度条中实时显示当前加载的百分值,解决思路是:避开直接获取元素的百分值,js中用'自+1的变量+ “%”'的形式做字符串拼接,再赋值到css()中,这样处理会省掉中间很多不必要的转换操作,有兴趣的同学可亲身感受下,呵。

2、给进度条加动感展示效果:一png背景图+css3的animation、keyframes+伪元素:before/:after。值得注意的是:CSS伪元素不是DOM元素,因此你无法直接选择到它们。变通的做法是:为该元素添加新类选择器,并通过设置新类选择器的属性来达到改变伪元素属性的效果。详细可参考:https://www.jb51.net/article/52992.htm

完整源码:

*{margin: 0;padding: 0;}

body{padding: 50px;}

.progressbar{width: 600px;height: 16px;line-height: 16px;background-color: #bbb;border-radius: 8px;overflow: hidden;}

.progressbar .pb_inner{width:0;height: 100%;border-radius: 8px;background:-webkit-linear-gradient(#7EEA19, #53AD00);background:-o-linear-gradient(#7EEA19, #53AD00);background:linear-gradient(#7EEA19, #53AD00);text-align: center;color: #fff;font-weight: bold;position: relative;}

.progressbar .pb_inner:before{display: block;content:"";width: 100%;height: 100%;position: absolute;left:0;top: 0;border-radius: 8px;background:url(https://www.phpvar.com/phpvar/wp-content/uploads/wenli.png) repeat center top;opacity: .3;

filter: alpha(opacity=30);

-webkit-animation: bgMove 1500ms linear infinite;

-o-animation: bgMove 1500ms linear infinite;

animation: bgMove 1500ms linear infinite;

}

@-webkit-keyframes bgMove {

from { background-position: 0 0;}

to { background-position: 0 -64px;}

}

@-o-keyframes bgMove {

from { background-position: 0 0;}

to { background-position: 0 -64px;}

}

@-moz-keyframes bgMove {

from { background-position: 0 0;}

to { background-position: 0 -64px;}

}

@keyframes bgMove {

from { background-position: 0 0;}

to { background-position: 0 -64px;}

}

.progressbar .pb_inner:after{width: 64px;height: 100%;content: "";display: block;border-radius: 8px;position: absolute;right: 0;top: 0;background:-webkit-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.6) 98%, rgba(255,255,255,0) 100%);background:-o-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.6) 98%, rgba(255,255,255,0) 100%);background:linear-gradient(to right, rgba(255,255,255,0) 0%, rgba(255,255,255,0.6) 98%, rgba(255,255,255,0) 100%);}

.progressbar .hideAni:before,.progressbar .hideAni:after{display: none;}

// 实例开始

(function(){

var obj=$(".pb_inner");

var i=0;

var showProgress=function(args){

obj.css("width",(++i)+"%");

obj.text(i+"%");

var args=arguments;

var st=setTimeout(function(){

args.callee();

},50);

if(i>=100){

$(".progressbar .pb_inner").addClass('hideAni');

clearTimeout(st);

}

}();

})();

提示:你可以先修改部分代码再运行。

结合运用css3新属性+jq能做出很多很好看、很有创意的效果,但这过程中实现思路以及遇到问题会变通处理的思维方式 会显示更加重要! 功力尚浅,路还很长.....

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值