css实现Circle进度环
网上有各种进度,进度条啊,进度环,进度条做起来简单,可是有很多时候需要的是进度环,本篇是用css3的效果结合js完成进度环的。
废话不多说了,上结构
html:
<div class="loading">
<div class="left"><span></span></div>
<div class="right"><span></span></div>
<div class="progress"><span>0</span>%</div>
</div>
大概结构是这样的(图烂勿怪,我画图烂的有一手,(ノへ ̄、)
)
css:
.loading{
margin: 10px auto;
width: 150px;
height: 150px;
position: relative;
background-color: #FFF;
}
.progress{
position: absolute;
top: 50%;
left: 50%;
width: 130px;
height: 130px;
transform: translate(-50%,-50%);
color: red;
line-height: 130px;
text-align: center;
background-color: #FFF;
border-radius: 50%;
}
.left,.right{
float: left;
width: 50%;
height: 100%;
position: relative;
overflow: hidden;
}
.left span,.right span{
display: block;
position: absolute;
width: 100%;
height: 100%;
background-color: red;
transition: all 0.4s;
}
.left span{
border-radius:150px 0 0 150px;
transform-origin: right;
}
.right span{
border-radius:0 150px 150px 0;
transform-origin: left;
}
主要的原理就是让.left
,.right
的span
通过transform: rotateZ
旋转角度,一开始.left span
旋转180度到.right
那边,然后通过overflow: hidden
使其超过的隐藏,此时.left span
完全在.left
外面,完全隐藏了,然后通过减小.left span
的旋转角度,让其在.left
中显现出来,.right span
同理。其实本来显示的会是一个扇形,但是由于有.progress
这个白色的圆覆盖在.loading
上面,就变成了圆环。
实现效果如下,可以在输入框输入:(本人对颜色极其不敏感,红色不好看就不要吐槽了,自己改)
近期评论