css绘制扇形进度条


本文摘自PHP中文网,作者V,侵删。

前言:

本文为大家分享了利用纯css绘制圆环进度条的方法,在使用本文中的方法时,建议先了解圆心角、弧度制、三角函数等知识。

为实现如下效果呕心沥血:

b66534fd94c4704bae3a4ffd32a6984.png

当然你可以拥抱 Svg...在此分享如何纯 Css 打造圆环进度条,只需三步!

77d98eaed7ac2b1e6c1af588ac0f2da.png

此物乃 2 + 1 夹心饼干,蓝绿色部分为果酱。显而易见饼干为两个削成了圆形的 div,我们重点演示果酱是怎么制作的:

1f809c04b7f891d0b926380da44040b.png

如图所示,大扇形由 6 个小扇形构成,每一小扇形占整个圆饼的 1/15,大扇形占整个圆饼的 6/15。我们只需构造一个扇形单元,将其复制 6 份后旋转相应角度连接至一起即可。

如何构造扇形?用三角形伪装...

5c1166b00fa549538037f67812678e9.png

三角形的宽高如何计算?假定圆半径 $radius 为 100px,等分数 $count 为 15。则小扇形的圆心角为 360deg / 15,三角形的高为 100px,宽为 2 * 100px * tan(360deg / 15 / 2)。其中 360deg / 15 / 2 转化弧度制为 PI / 15(PI == 360deg / 2)。

1

2

3

4

5

6

7

8

span {

    width: 0;

    height: 0;

    border: $radius solid transparent;

    $borderWidth: tan(pi() / $count) * $radius;

    border-left-width: $borderWidth;

    border-right-width: $borderWidth;

}

数学欠佳的同学请自行科普...

对于 $count 为 1 或 2 的情况需特殊处理,因为 tan(PI) 及 tan(PI / 2) 为无穷值,不了解的同学请研究正切函数图像:

9d4f34fc5e7528841e92fab69abddac.png

相关代码(其中 $diameter = 2 * $radius 为圆直径):

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

span {

    @if $count == 1 {

        width: $diameter;

        height: $diameter;

    } @else if $count == 2 {

        width: $diameter;

        height: $radius;

    } @else {

        width: 0;

        height: 0;

        border: $radius solid transparent;

        $borderWidth: tan(pi() / $count) * $radius;

        border-left-width: $borderWidth;

        border-right-width: $borderWidth;

    }

}

最后,复制并逐一旋转扇形单元:

1

2

3

4

5

6

7

8

9

10

@for $index from 0 to $count {

    span:nth-child(#{$index + 1}) {

        $transform: translate(-50%, 0) rotate(360deg / $count / 2 + 360deg * $index / $count);

        $origin: if($count == 2, bottom, center);

        -webkit-transform: $transform;

                transform: $transform;

        -webkit-transform-origin: $origin;

                transform-origin: $origin;

    }

}

果酱制作完毕,其它点缀请自行添加喽...本例完整代码在此。

2017/11/14 续更

由于本例引入了三角函数等数学运算,使用 Sass 预编译。未安装 Sass 的同学可下载经编译的 源码 开启 sector.html 查看效果。

安装 Sass 请参考 sunmengyuan.github.io/garden/2017… 文章末尾的安装教程。

本例调试方法:

1

2

cd sector

sass --watch style.scss:style.css --debug-info

作者:呆恋小喵

我的后花园:sunmengyuan.github.io/garden/

我的 github:github.com/sunmengyuan

原文链接:sunmengyuan.github.io/garden/2017…

相关推荐:css教程

以上就是css绘制扇形进度条的详细内容,更多文章请关注木庄网络博客

相关阅读 >>

怎么用css设置图片大小

html水平线hr颜色怎么写

css如何让div居中?css实现div居中的方法

css nav-index属性怎么用

深入了解css中的will-change属性

网页布局的时候先写html还是先写css

css中:not用法是什么

使用css flexbox构建网站标题

css 背景不滚动的实现方法

css flex属性怎么用

更多相关阅读请进入《css》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...