欢迎您 本站地址:  

SVG 阴影

<feOffset>

<feOffset> 是 SVG 滤镜中的一个元素,用于在图像上创建一个偏移效果,可以用来创建阴影、轮廓和其他视觉效果。它的作用是将输入图像的每个像素沿着指定的水平和垂直方向移动一定的距离,然后将结果图像作为滤镜效果的输出。

基本语法

<feOffset dx="x-offset" dy="y-offset" />

以下代码定义了一个偏移滤镜,然后将其应用于一个红色填充的矩形,使矩形呈现出带有偏移效果的阴影,阴影在水平方向和垂直方向上分别偏移了 5 个像素。

实例

<svg width="200" height="200" xmlns="http://www.w3.org/2000/svg">
  <!-- 定义偏移滤镜 -->
  <filter id="offset_filter">
    <feOffset dx="5" dy="5" />
  </filter>
 
  <!-- 应用偏移滤镜的矩形 -->
  <rect x="50" y="50" width="100" height="80" fill="red" filter="url(#offset_filter)" />
</svg>

<feDropShadow>

SVG 阴影效果可以通过 <feDropShadow> 元素实现,它可以为 SVG 图形元素添加阴影效果,使其看起来更加立体和真实。

基本语法

<feDropShadow dx="offset-x" dy="offset-y" stdDeviation="blur-radius" flood-color="color" flood-opacity="opacity" />

以下代码定义了一个阴影滤镜,然后将其应用于一个红色填充的矩形,使矩形呈现出带有灰色阴影的效果,阴影在水平方向和垂直方向上分别偏移了 5 个像素,模糊半径为 5 个像素,阴影的颜色为灰色,不透明度为 0.5。

实例

<svg width="200" height="200" xmlns="http://www.w3.org/2000/svg">
  <!-- 定义阴影滤镜 -->
  <filter id="shadow_filter">
    <feDropShadow dx="5" dy="5" stdDeviation="5" flood-color="gray" flood-opacity="0.5" />
  </filter>
 
  <!-- 应用阴影滤镜的矩形 -->
  <rect x="50" y="50" width="100" height="80" fill="red" filter="url(#shadow_filter)" />
</svg>

实例 1

<feOffset> 元素是用于创建阴影效果。我们的想法是采取一个SVG图形(图像或元素)并移动它在 xy 平面上一点儿。

第一个例子偏移一个矩形(带 <feOffset>),然后混合偏移图像顶部(含 <feBlend>):

feoffset

下面是 SVG 代码:

实例

<svg xmlns="http://www.w3.org/2000/svg" version="1.1">
? <defs>
??? <filter id="f1" x="0" y="0" width="200%" height="200%">
????? <feOffset result="offOut" in="SourceGraphic" dx="20" dy="20" />
????? <feBlend in="SourceGraphic" in2="offOut" mode="normal" />
??? </filter>
? </defs>
? <rect width="90" height="90" stroke="green" stroke-width="3"
? fill="yellow" filter="url(#f1)" />
</svg>

尝试一下 >

点击查看: 查看 SVG 文件

代码解析:


实例 2

现在,偏移图像可以变的模糊(含 <feGaussianBlur>):

feoffset2

下面是SVG代码:

实例

<svg xmlns="http://www.w3.org/2000/svg" version="1.1">
? <defs>
??? <filter id="f1" x="0" y="0" width="200%" height="200%">
????? <feOffset result="offOut" in="SourceGraphic" dx="20" dy="20" />
????? <feGaussianBlur result="blurOut" in="offOut" stdDeviation="10" />
????? <feBlend in="SourceGraphic" in2="blurOut" mode="normal" />
??? </filter>
? </defs>
? <rect width="90" height="90" stroke="green" stroke-width="3"
? fill="yellow" filter="url(#f1)" />
</svg>

尝试一下 >

点击查看: 查看 SVG 文件

代码解析:

实例 3

现在,制作一个黑色的阴影:

feoffset3

下面是 SVG 代码:

实例

<svg xmlns="http://www.w3.org/2000/svg" version="1.1">
? <defs>
??? <filter id="f1" x="0" y="0" width="200%" height="200%">
????? <feOffset result="offOut" in="SourceAlpha" dx="20" dy="20" />
????? <feGaussianBlur result="blurOut" in="offOut" stdDeviation="10" />
????? <feBlend in="SourceGraphic" in2="blurOut" mode="normal" />
??? </filter>
? </defs>
? <rect width="90" height="90" stroke="green" stroke-width="3"
? fill="yellow" filter="url(#f1)" />
</svg>

尝试一下 >

点击查看: 查看 SVG 文件

代码解析:

实例 4

现在为阴影涂上一层颜色:

feoffset4

下面是 SVG 代码:

实例

<svg xmlns="http://www.w3.org/2000/svg" version="1.1">
? <defs>
??? <filter id="f1" x="0" y="0" width="200%" height="200%">
????? <feOffset result="offOut" in="SourceGraphic" dx="20" dy="20" />
????? <feColorMatrix result="matrixOut" in="offOut" type="matrix"
????? values="0.2 0 0 0 0 0 0.2 0 0 0 0 0 0.2 0 0 0 0 0 1 0" />
????? <feGaussianBlur result="blurOut" in="matrixOut" stdDeviation="10" />
????? <feBlend in="SourceGraphic" in2="blurOut" mode="normal" />
??? </filter>
? </defs>
? <rect width="90" height="90" stroke="green" stroke-width="3"
? fill="yellow" filter="url(#f1)" />
</svg>

尝试一下 >

点击查看: 查看 SVG 文件

代码解析:

注意事项

通过使用 <feOffset> 元素,你可以为SVG图形元素创建偏移效果,使其呈现出更加生动和立体的外观。

小库提示

扫描下方二维码,访问手机版。