【发布时间】:2014-03-03 22:09:22
【问题描述】:
我目前正在使用 SVG 渐变来为路径应用淡出效果。这允许路径在 x0 处以 100% 的不透明度开始,并在 x1 处淡出到 0%,无论这些路径可能适用于它所应用的特定路径:
<svg>
<linearGradient id="gradient_to_transparent" x1="0%" x2="100%">
<stop offset="0" stop-opacity="1"></stop>
<stop offset="1" stop-opacity="0"></stop>
</linearGradient>
<path
d="M 10,30 A 20,20 0,0,1 50,30 A 20,20 0,0,1 90,30 Q 90,60 50,90 Q 10,60 10,30 z"
style="stroke:url(#gradient_to_transparent);"
/>
</svg>
这在应用于上述路径的笔触样式时效果很好。
但是,问题在于,通过使用笔触样式,我无法应用其他笔触样式,并且默认为黑色。我想要的是使用我想要的任何颜色来设置笔触的样式,然后将渐变应用到笔触不透明度或应用 SVG 过滤器来创建淡出效果。我尝试使用 SVG 过滤器并将 feComponentTransfer 与 feFuncA 一起使用,但无法获得正确的结果。
需要为每条路径单独计算笔触颜色。因此,在渐变中设置颜色的解决方案不会很好地缩放。
【问题讨论】:
-
需要渐变还是滤镜?我建议使用一个
,其中包含一个应用了渐变的矩形,但我不确定您的要求。一个例子:xn--dahlstrm-t4a.net/svg/presentations/svgdemos/… -
@ErikDahlström,您应该将此作为答案发布,因为它看起来是一个很好的解决方案。不过,计算曲线路径的掩码大小和位置存在一些复杂性。
标签: css svg svg-filters