SVG筛选器的正确大小

时间:2019-01-09 18:42:27

标签: svg svg-filters

我在svg中使用了非常简单的高斯模糊:

<filter id="filter2" x="-10%" y="-10%" width="120%" height="120%">
    <feGaussianBlur in="SourceAlpha" stdDeviation="5"/>
</filter>

此效果的两侧基本上都是15像素宽(此后的模糊效果太弱了)。 如何在过滤器尺寸(x,y,宽度,高度)中正确编码,以便可以将过滤器重用于任意元素? 特别是我有一些小圆圈(大约10像素宽)和一些更大的多边形(几百像素宽)。 xy很简单,我可以将它们设置为-15。 但是,widthheight是一个问题。 120%不足以容纳较小的元素,而容纳较大的元素则太多。我正在将svg转换为pdf,这会产生巨大的利润。

理想情况下,我想设置类似100% + 15px的名称。有没有办法做到这一点?

1 个答案:

答案 0 :(得分:0)

您不能在过滤器尺寸声明中直接使用混合尺寸(不过-SVG2可能有可能-不确定)。今天,您必须选择%或绝对单位(objectBoundingBox或userSpaceOnUse),因此,如果要在不同大小的形状上发生固定大小的溢出,则需要定义多个具有不同大小的过滤器。至少没有太多的文档重量。

一种选择是只使用默认的滤镜边距(大约为+/- 10%),并为std Deviation更改为%大小调整,如下所示:

<filter id="filter2" primitiveUnits="objectBoundingBox">
    <feGaussianBlur in="SourceAlpha" stdDeviation="3%"/>
</filter>

它将以绝对术语创建可变大小的模糊-但您只需要一个滤镜声明即可。