博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
利用CSS-border属性实现圆饼图表
阅读量:6236 次
发布时间:2019-06-22

本文共 3132 字,大约阅读时间需要 10 分钟。

  一般圆饼图表的实现如不考虑IE低版本浏览器的话,利用Canvas或是CSS3都能很好的实现,可是我们现在做的项目最低都要兼容到IE8,所以就想到了Border,相信大家用过border画出各种兼容良好的三角形。

像这样的图表如果只平分四等分的话,实现起来还是挺简单的:

html代码:

CSS代码:

.border-i{
width:80px; height:80px; border-radius:40px; background:#ffd203; overflow:hidden; position:relative; }.border-i i{
width:0; height:0; border:40px transparent dotted; position:absolute;}.border-i .i1{
right:-40px; top:-40px;}.border-i .i2{
right:-40px; bottom:-40px;}.border-i .i3{
left:-40px; bottom:-40px;}.border-i .i4{
left:-40px; top:-40px;}

 

现在刚好把一个圆饼平分了四等分,如要不同颜色显示直接改变其border-color即可。

原理如下图,一个带有圆角的容器里面有四个宽高和自己一样的子元素平铺排列,然后溢出隐藏。

所以,如果比例占5%的话(默认宽高都80像素),

h=40*tan(360deg*5%);

结果约等于13px,那css代码如下:

.border-i .i2{
top:-40px; right:-13px; border-right:13px solid #fd9500;}

呈现效果如下:

 

可以看出只要控制了圆饼的四分之一即0%~25%,那其他的25%~50%、50%~75%、75%~100%原理都一样,

其中除去几个特殊值:

/* 0% *//* 所有border-color默认透明; */  /* 25% */.border-i .i2{
border:40px #fd9500 solid;}  /* 50% */.border-i .i2,.border-i .i3{
border:40px #fd9500 solid;}  /* 75% */.border-i .i2,.border-i .i3,.border-i .i4{
border:40px #fd9500 solid;}  /* 100% */.border-i .i1,.border-i .i2,.border-i .i3,.border-i .i4{
border:40px #fd9500 solid;}

其他的计算原理都一样:

/* *设 A = 0%~25%; *  H = 40 * tan(360deg * A%); */.border-i .i1{
right: -Hpx; border-left: Hpx solid #fd9500;}/* *设 B = 25%~50%; * H = 40 * tan(360deg *(B% - 25%)); */.pct30 .i1{
border-color: #fd9500;}.pct30 .i2{
bottom: -Hpx; border-top: Hpx solid #fd9500;}/* *设 C = 50%~75%; * H = 40 * tan(360deg *(C% - 50%)); */.pct55 .i1, .pct55 .i2{
border-color: #fd9500;}.pct55 .i3{
left: -Hpx; border-right: Hpx solid #fd9500;}/* *设 D = 75%~100%; * H = 40 * tan(360deg *(D% - 75%)); */.pct80 .i1, .pct80 .i2, .pct80 .i3{
border-color: #fd9500;}.pct80 .i4{
top: -Hpx; border-bottom: Hpx solid #fd9500;}

最后Demo效果如下:

Demo源码:

    
利用CSS-border属性实现圆饼图表

0%

15%

25%

40%

50%

65%

75%

90%

100%

View Code

如果要兼容IE8以下的浏览器的圆角(border-radius),就加一个尺寸一样的遮罩层,背景为圆形镂空背景色的纯色png图片:

在body底部</body>标签前加入如上代码,注意图片地址为你自己放置的路径。

 

http://www.cnblogs.com/chaooo/p/5341549.html

 

转载于:https://www.cnblogs.com/chaooo/p/5341549.html

你可能感兴趣的文章
开源SIP服务器加密软件NethidPro升级
查看>>
Apache Pulsar中的地域复制,第1篇:概念和功能
查看>>
python pip install 出现 OSError: [Errno 1] Operation not permitted
查看>>
从源码分析scrollTo、scrollBy、Scroller方法的区别和作用
查看>>
ObjectOutputStream和ObjectInputStream
查看>>
南京大学周志华教授当选欧洲科学院外籍院士
查看>>
马士兵教学语录
查看>>
计算机网络与Internet应用
查看>>
oracle在线迁移同步数据,数据库报错
查看>>
linux性能剖析工具
查看>>
flutter中的异步
查看>>
计算机高手也不能编出俄罗斯方块——计算机达人成长之路(16)
查看>>
error LNK2001: 无法解析的外部符号 __CrtDbgReport
查看>>
【多线程】的简单理解&进程 and【你的电脑是几核的?】
查看>>
# 2017-2018-1 20155224 《信息安全系统设计基础》第七周学习总结
查看>>
scikit-learn预处理实例之一:使用FunctionTransformer选择列
查看>>
邮件客户端导入邮件通讯录地址薄
查看>>
Centos 7配置LAMP
查看>>
tomcat7 1000并发量配置 tomcat7配置优化
查看>>
oracle 11g jdbc jar包在哪个文件目录
查看>>