css实现饼状图
有⼀些⽹页中,有时候会碰到饼状图的需求,⽐如统计图表,进度指⽰器,定时器等,实现⽅式也是各种各样,现在也有不少现成的js库,可以直接拿来使⽤,⽅便很多。这⾥笔者为⼤家演⽰⼀种纯css实现饼状图效果的⽅法。
<div class="pie"></div>
.pie{
width: 100px;
height: 100px;
border-radius: 50%;
background: yellowgreen;
background-image:linear-gradient(to right, transparent 50%, #6550);
}
.pie::before{
content: '';
display: block;
margin-left: 50%;
height: 100%;
border-radius: 0 100% 100% 0/50%;
background-color: inherit;
transform-origin: left;
transform:rotate(.2turn);
}
实现效果如图所⽰:
改变rotate的⾓度就可以实现不同⼤⼩的饼状图效果,但是亲⼿试验的读者会发现,旋转50%以上并不能呈现出理想的效果,⽽是会呈现出如下效果:
要解决这个问题,改变伪元素的背景⾊就可以解决,当需要展⽰的区域⼤于⼀半时,改变背景⾊就OK。
下⾯笔者展⽰⼀个简单的进度指⽰器⽰例,读者亲⼿试验的话,会发现⼀个不断变化的饼状图效果。
.pie{
width: 100px;
height: 100px;
border-radius: 50%;
background: yellowgreen;
background-image:linear-gradient(to right, transparent 50%, #6550);
}
.pie::before{
content: '';
display: block;
margin-left: 50%;
height: 100%;
border-radius: 0 100% 100% 0/50%;
background-color: inherit;
transform-origin: left;
animation: spin 3s linear infinite,bg 6s step-end infinite;
svg图}
@keyframes spin{
to{transform:rotate(.5turn);}
}
@keyframes bg{
50%{background:#655;}
}
效果截图如下:
读者最好亲⼿试验,尝试修改其中的属性,理解其中的意思,只有理解了才能做出更有趣的东西。如果读者对svg感兴趣的话,可以尝试使⽤svg来实现饼状图,svg实现的效果要更加丰富多彩些。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。