html css百分比效果,利用css3实现进度条效果及动态添加百分比

项目过程中,开始使用了js的requestAnimationFrame方法实现进度条,但是在数据超级多的时候非常影响性能,如此改用css去实现,优化。

先贴代码:

Document

*{margin: 0;padding: 0}

.box{width: 100px;height: 10px;border-radius: 10px;background: #999;margin: 100px auto;border: 1px solid #ff6780;}

.child{position: relative;height:100%;border-radius:inherit;}

.process-animate{background: #ff6780;position: absolute;left: 0;top: 0;bottom: 0;border-radius:inherit;

animation: process 1s linear forwards ;

}

@keyframes process

{

0%{

left:0;right:100%;

}

20%{

right:80%

}

40%{

right:60%;

}

60%{right:40%;}

80%{right:20%;}

100%{right:0;}

}

// child的百分比就是进度条的占比效果

效果图(复制代码可查看动态效果):

64603b74c0d4ac6991f26edba4a96a87.png

正常情况下,百分比肯定是根据后台数据进行计算得出的,所以是动态传入的,下面贴vue代码

进度条子组件(progress.vue):

export default {

props: {

addGray: {

//置灰

type: Boolean,

default: false

},

progressWidth: {

//进度条百分比

type: Number,

default: 0

}

},

mounted() {

this.$nextTick(() => {

console.log(this.addGray, "addGray---");

this.$refs.processChild.style.width = this.progressWidth + "%"; //动态改变进度条

// this.$refs.processChild.style.width = 90 + "%"; 测试效果

});

}

};

.process-wrapper {

width: 1.98rem;

height: 0.13rem;

margin: 0.12rem 0 0.1rem 0;

border-radius: 0.1rem;

background: #fff;

border: 0.01rem solid #ff6780;

&.addGray {

background: #999;

border: 0.01rem solid #999;

}

.process-child {

position: relative;

height: 100%;

// width: 100%; //这个width就是动态变化。通过js改变

border-radius: inherit;

.process-animate {

background: #ff6780;

position: absolute;

left: 0;

top: 0;

bottom: 0;

border-radius: inherit;

animation: process 1s linear forwards;

&.addGray {

background: #999 !important;

// border: 0.01rem solid #999;

}

}

}

}

@keyframes process {

0% {

left: 0;

right: 100%;

}

20% {

right: 80%;

}

40% {

right: 60%;

}

60% {

right: 40%;

}

80% {

right: 20%;

}

100% {

right: 0;

}

}

父组件调用:

看看实际效果:

80fc3b86e9fa72433953cca5b273e25f.png

over;完美用css 解决了js递归动画性能消耗。

到此这篇关于利用css3实现进度条效果及动态添加百分比的文章就介绍到这了,更多相关css3进度条添加动态百分比内容请搜索脚本之家以前的文章或继续浏览下面的相关文章,希望大家以后多多支持脚本之家!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值