是否可以在 svg 背景图像中使用 css 变量?
Is it possible to use css variables in a svg background-image?
CSS 变量在 SVG 背景图像中使用时不起作用:
.icon-24 {
width: 24px;
height: 24px;
display: inline-block;
vertical-align: middle;
background-repeat: no-repeat;
background-color: silver;
}
.icon-24-stroke {
--color-test: red;
background-image: url("data:image/svg+xml;charset=utf-8,<svg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='none' stroke='var(--color-test)' stroke-linecap='round' stroke-linejoin='round' stroke-miterlimit='10' stroke-width='1px'> <circle cx='12' cy='12' r='8' /> </svg>");
}
.icon-24-fill {
--color-test: red;
background-image: url("data:image/svg+xml;charset=utf-8,<svg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='var(--color-test)'><circle cx='12' cy='12' r='8' /></svg>");
}
<p>The circle stroke should be red:</p>
<i class="icon-24 icon-24-stroke"></i>
<p>The circle fill should be red:</p>
<i class="icon-24 icon-24-fill"></i>
有没有办法让它工作?
就像@BoltClock 在评论中所说的那样,不可能在 url 中使用 css 变量。
CSS 变量在 SVG 背景图像中使用时不起作用:
.icon-24 {
width: 24px;
height: 24px;
display: inline-block;
vertical-align: middle;
background-repeat: no-repeat;
background-color: silver;
}
.icon-24-stroke {
--color-test: red;
background-image: url("data:image/svg+xml;charset=utf-8,<svg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='none' stroke='var(--color-test)' stroke-linecap='round' stroke-linejoin='round' stroke-miterlimit='10' stroke-width='1px'> <circle cx='12' cy='12' r='8' /> </svg>");
}
.icon-24-fill {
--color-test: red;
background-image: url("data:image/svg+xml;charset=utf-8,<svg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='var(--color-test)'><circle cx='12' cy='12' r='8' /></svg>");
}
<p>The circle stroke should be red:</p>
<i class="icon-24 icon-24-stroke"></i>
<p>The circle fill should be red:</p>
<i class="icon-24 icon-24-fill"></i>
有没有办法让它工作?
就像@BoltClock 在评论中所说的那样,不可能在 url 中使用 css 变量。