我有一个SVG圆形动画用于进度条,其中stroke-dashoffset
从0,radius
到radius,0
进行动画处理(对应0%到100%)。
圆周长的长度方程式为pi * d
。是否有一种方法可以使用CSS的calc
函数来使用pi的值,而不仅仅是一个舍入后的值(如3.14)?
我有一个SVG圆形动画用于进度条,其中stroke-dashoffset
从0,radius
到radius,0
进行动画处理(对应0%到100%)。
圆周长的长度方程式为pi * d
。是否有一种方法可以使用CSS的calc
函数来使用pi的值,而不仅仅是一个舍入后的值(如3.14)?
<calc-constant>
pi
常量,只能在 CSS 的 calc()
数学函数中使用。.circle {
--diameter: 3px;
--circumference: calc(pi * var(--diameter); <-- `pi`
stroke-dashoffset: var(--circumference);
}
相反,你可以使用CSS变量来为它分配一个数字:
:root {
--pi: 3.14159265358979;
}
.circle {
--diameter: 3px;
--circumference: calc(var(--pi) * var(--diameter));
stroke-dashoffset: var(--circumference);
}
$pi: 3.14159265358979
.circle {
--diameter: 3px;
--circumference: calc(${pi} * var(--diameter));
stroke-dashoffset: var(--circumference);
}
cssnext
。只需确保“新版CSS”符合标准,或者至少新版浏览器会采用它,除非您准备每隔几个月更改一次。 - trysis不必考虑精确数值,因为计算机无法完全表示所有数字。只需使用一个较长的pi近似值:
3.141592653589793
3.141592653589793
是最好的选择,因为它会四舍五入为最接近真实值π的IEEE 754二进制64位值。你提供的值将会有大约7.3个ulp(即最后一位单位)左右的误差。 - Mark Dickinson22/7 = 3.14
377/120 = 3.142
355/113 = 3.141592
今天在Sass中,您可以访问PI变量。 来源
@use 'sass:math';
$d: 10;
$yourStuff: math.$pi * $d;
然而,正如其他人所提到的,它仍然只是一个近似的π值,不是真正的π。尽管如此,它是一个不错的近似值:
@debug math.$pi; // 3.1415926536