SVG 模糊效果通过 feGaussianBlur
元素来实现。该效果可以对图形元素进行模糊处理,模拟出焦外效果或者为图形添加柔和的外观。模糊程度可以通过 stdDeviation
属性进行控制,数值越大,模糊效果越明显。
目录
基本语法
在 SVG 中应用模糊效果时,首先需要定义一个 <filter>
元素,并在其中使用 feGaussianBlur
元素来设置模糊参数。然后,将该滤镜应用到一个图形元素上。
<svg width="200" height="200">
<defs>
<filter id="blurEffect">
<feGaussianBlur in="SourceGraphic" stdDeviation="10" />
</filter>
</defs>
<circle cx="100" cy="100" r="50" stroke="black" stroke-width="3" fill="red" filter="url(#blurEffect)" />
</svg>
<filter>
:定义滤镜效果的容器。id="blurEffect"
:指定滤镜的 ID,用于引用该滤镜。<feGaussianBlur>
:应用模糊效果。in="SourceGraphic"
:指定输入源为图形元素。stdDeviation="10"
:控制模糊的程度,数值越大,模糊效果越强。
模糊效果应用示例
1. 简单的模糊效果
这是一个基本的模糊效果示例,它将 feGaussianBlur
应用于一个圆形元素。
<svg width="200" height="200">
<defs>
<filter id="blurEffect">
<feGaussianBlur in="SourceGraphic" stdDeviation="5" />
</filter>
</defs>
<circle cx="100" cy="100" r="50" fill="blue" filter="url(#blurEffect)" />
</svg>
stdDeviation="5"
:设置模糊效果的强度,数值较小会产生轻微的模糊效果。
2. 强烈的模糊效果
<svg width="200" height="200">
<defs>
<filter id="strongBlur">
<feGaussianBlur in="SourceGraphic" stdDeviation="15" />
</filter>
</defs>
<circle cx="100" cy="100" r="50" fill="green" filter="url(#strongBlur)" />
</svg>
stdDeviation="15"
:模糊强度增大,图形变得更加模糊。
3. 多重模糊效果
可以将多个模糊效果结合使用,以产生更复杂的视觉效果。
<svg width="200" height="200">
<defs>
<filter id="multiBlur">
<feGaussianBlur in="SourceGraphic" stdDeviation="5" />
<feGaussianBlur in="SourceAlpha" stdDeviation="10" />
</filter>
</defs>
<circle cx="100" cy="100" r="50" fill="purple" filter="url(#multiBlur)" />
</svg>
- 通过多个
<feGaussianBlur>
元素,可以创建不同程度的模糊效果,产生更柔和的外观。
feGaussianBlur
属性详解
in
:指定输入源,可以是SourceGraphic
、SourceAlpha
等。SourceGraphic
:表示图形元素本身。SourceAlpha
:表示图形元素的透明度信息,用于透明度模糊效果。
stdDeviation
:控制模糊效果的程度,数值越大,模糊效果越明显。标准差(stdDeviation)是模糊的核心参数,它影响模糊的范围和强度。示例:stdDeviation="5"
:轻度模糊。stdDeviation="15"
:强烈模糊。
result
(可选):指定该滤镜操作的输出结果的名称。可以在后续的滤镜步骤中引用。
模糊效果的实际应用
- 模糊背景:可以使用模糊效果为图形添加背景模糊,使前景图形更加突出。
<svg width="400" height="400"> <defs> <filter id="backgroundBlur"> <feGaussianBlur in="SourceGraphic" stdDeviation="8" /> </filter> </defs> <rect x="50" y="50" width="300" height="300" fill="yellow" filter="url(#backgroundBlur)" /> </svg>
- 图形阴影:通过模糊效果,可以为图形添加柔和的阴影,使其看起来更有立体感。
<svg width="200" height="200"> <defs> <filter id="shadowBlur"> <feGaussianBlur in="SourceAlpha" stdDeviation="10" result="blurredAlpha" /> <feOffset in="blurredAlpha" dx="5" dy="5" result="offsetBlur" /> <feFlood flood-color="black" result="color" /> <feComposite in2="offsetBlur" operator="in" /> <feComposite in2="color" operator="in" /> <feComposite in2="SourceAlpha" operator="in" /> </filter> </defs> <circle cx="100" cy="100" r="50" fill="red" filter="url(#shadowBlur)" /> </svg>
通过这种方式,模糊效果与其他滤镜组合使用,生成阴影效果。
发表回复