gpt4 book ai didi

html - 带变量的 SVG 过滤器?

转载 作者:搜寻专家 更新时间:2023-10-31 19:29:12 24 4
gpt4 key购买 nike

我有一个像这样实现的 SVG 辉光滤镜:

<filter id="outline">
<feMorphology in="SourceAlpha" operator="dilate" radius="2"></feMorphology>
<feGaussianBlur stdDeviation="1" result="dilated"></feGaussianBlur>
<feFlood style="flood-color: #RRGGBB"></feFlood>
<feComposite in2="dilated" operator="in"></feComposite>
<feMerge>
<feMergeNode></feMergeNode>
<feMergeNode in="SourceGraphic"></feMergeNode>
</feMerge>
</filter>

这很好用,但只适用于一种特定的发光颜色。

我希望能够拥有任意发光颜色,以某种方式将变量传递给 flood-color 属性。

我尝试过使用 currentColor,但这似乎是定义过滤器时的颜色,而不是应用过滤器时的颜色。

可以为每种颜色定义一个过滤器(它们的数量有限),但它会更好 - 当然更节省空间 - 只需要定义一次。这可能吗?如果可能的话如何?

最佳答案

在下一个示例中,flood-color 是当前颜色。如果单击 svg 元素,则会切换类“蓝色”。 svg 元素的 colorred .blue 的颜色是蓝色。

当您切换蓝色类时,过滤器会更改泛色。

test.addEventListener("click",()=>{
test.classList.toggle("blue")
})
svg {
border: 1px solid;
font-size: 40px;
text-anchor: middle;
dominant-baseline: middle;
width:100px;
color:red;
}

.blue{color:blue;}
<svg id="test"  viewBox="0 0 100 70">

<filter id="outline">
<feMorphology in="SourceAlpha" operator="dilate" radius="2"></feMorphology>
<feGaussianBlur stdDeviation="1" result="dilated"></feGaussianBlur>
<feFlood style="flood-color: currentcolor"></feFlood>
<feComposite in2="dilated" operator="in"></feComposite>
<feMerge>
<feMergeNode></feMergeNode>
<feMergeNode in="SourceGraphic"></feMergeNode>
</feMerge>
</filter>

<text x="50" y="40" filter="url(#outline)">click</text>

</svg>

关于html - 带变量的 SVG 过滤器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56654710/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com