feoffset的核心作用是控制视觉元素空间关系,通过dx/dy参数生成新图层作为后续滤镜输入,支持小数偏移、多通道输入(如sourcealpha)及命名输出,配合模糊、合并与混合实现拖影、分层阴影、倒影及非叠加合成效果。

feOffset 不只是简单挪动图像——它真正的作用是控制视觉元素的空间关系,为阴影、倒影、拖影和多层合成提供精确的位移锚点。
feOffset 的核心参数与行为逻辑
它通过 dx 和 dy 控制水平与垂直偏移量,单位为像素。关键在于:它不改变原图,而是生成一个新图层;这个新图层可作为后续滤镜(如模糊、混合)的输入源。偏移方向由正负号决定,比如 dx="-10" 向左移,dy="8" 向下移。
- 偏移量支持小数(如
dx="2.5"),适合高DPI屏幕下的精细控制 - 若未指定 in 属性,默认以原始图形(
SourceGraphic)为输入;常用显式写法如in="SourceAlpha"可只对透明度通道做偏移,常用于阴影边缘控制 -
result 属性必须命名,以便被后续滤镜引用,例如
result="shifted"
配合 feGaussianBlur 制作运动拖影
单靠位移看不出效果,但和模糊组合就产生动态感。典型用法是复制主体 → 沿运动方向偏移 → 对副本模糊 → 叠加回原图。
- 动画中物体向右快速移动时,设
<feoffset dx="6" dy="0" in="SourceGraphic" result="trail"></feoffset> - 紧接着
<fegaussianblur stddeviation="2" in="trail" result="blurredTrail"></fegaussianblur> - 最后用
<femerge></femerge>把模糊拖影和原图合并,形成“速度残留”视觉反馈
构建分层阴影与立体倒影
真实阴影不是单一层,往往有近端硬边+远端柔化。feOffset 是实现这种层次的关键起点。
- 先对 alpha 通道偏移(
in="SourceAlpha"),得到清晰轮廓的阴影底版 - 对该底版分别应用不同强度的
feGaussianBlur,生成多个模糊层级 - 用
<femerge></femerge>按顺序叠加:最锐利的在上(模拟近处投影),最模糊的在下(模拟远处弥散) - 倒影场景中,可设
dy="20"垂直向下偏移,再加低强度模糊,并降低 opacity 模拟水面衰减
与 feBlend / feComposite 实现非叠加位移
默认位移后直接覆盖或合并,但有时需要更精细的合成控制。
- 用
<feblend mode="multiply"></feblend>让偏移图层与原图以乘法方式融合,增强暗部层次 - 用
<fecomposite operator="arithmetic" k1="0" k2="1" k3="1" k4="0"></fecomposite>实现线性叠加,避免颜色溢出 - 结合
in2="BackgroundImage",还能让偏移图层与页面背景交互,做出视差式位移效果











