具有 CSS 变量的 SVG 半径或位置

Gan*_*ula 4 css svg css-variables

是否可以在 SVG 中使用 CSS 变量来操作元素的“属性样式”中的半径或位置等值?

例如,在下面的代码中,我添加了一个 CSS 颜色变量 ---dark-text-clr和一个半径变量--radius当我在填充中使用颜色 CSS 变量时,它渲染得很好 - 第一个圆,但使用半径变量不会渲染元素 - 第二个圆。

:root{
--dark-text-clr: blue;
--radius: 12;
}
Run Code Online (Sandbox Code Playgroud)
<svg xmlns="http://www.w3.org/2000/svg" width="300px" height="100px" viewBox="0 0 300 100">
  <circle cx="9" cy="9" fill="var(--dark-text-clr)" mask="url(#moon-mask)" r=9 ></circle>
  <circle cx="36" cy="20" fill="var(--dark-text-clr)" mask="url(#moon-mask)" r="var(--radius)" ></circle>
</svg>
Run Code Online (Sandbox Code Playgroud)

Rob*_*son 5

是的,但 CSS必须有非零值的单位。

:root{
--dark-text-clr: blue;
--radius: 12px;
}
Run Code Online (Sandbox Code Playgroud)
<svg xmlns="http://www.w3.org/2000/svg" width="300px" height="100px" viewBox="0 0 300 100">
  <circle cx="9" cy="9" fill="var(--dark-text-clr)" mask="url(#moon-mask)" r=9 ></circle>
  <circle cx="36" cy="20" fill="var(--dark-text-clr)" mask="url(#moon-mask)" r="var(--radius)" ></circle>
</svg>
Run Code Online (Sandbox Code Playgroud)

  • https://www.w3.org/TR/css-values-4/#length-value “长度是指距离测量,在属性定义中用 `&lt;length&gt;` 表示。长度是一个 **维度* *。”;和 https://www.w3.org/TR/css-values-4/#dimension “通用术语维度是指带有单位的数字”。唯一的例外是“0”的情况,其中单位是可选的。 (2认同)