此页面由社区从英文翻译而来。了解更多并加入 MDN Web Docs 社区。

View in English Always switch to English

<feDisplacementMap>

基线 广泛可用

自 2015年7月 起,此特性已在主流浏览器中得到支持,可在大多数设备和浏览器版本中正常使用。

<feDisplacementMap> SVG 滤镜原语使用来自 in2 图像的像素值,对来自 in 的图像进行空间位移。

变换公式如下:

P'(x,y) ← P(x + scale * (XC(x,y) - 0.5), y + scale * (YC(x,y) - 0.5))

其中 P(x,y) 是输入图像 inP'(x,y) 是目标图像。XC(x,y)YC(x,y) 分别是由 xChannelSelectoryChannelSelector 指定通道的分量值。

与其他滤镜原语一样,它默认在 linearRGB 色彩空间中处理颜色分量。你可以使用 color-interpolation-filters 改为使用 sRGB

使用上下文

类别滤镜元素
允许的内容任意数量、任意顺序的下列元素:
<animate><set>

属性

DOM 接口

该元素实现了 SVGFEDisplacementMapElement 接口。

示例

html
<svg
  width="200"
  height="200"
  viewBox="0 0 220 220"
  xmlns="http://www.w3.org/2000/svg">
  <filter id="displacementFilter">
    <feTurbulence
      type="turbulence"
      baseFrequency="0.05"
      numOctaves="2"
      result="turbulence" />
    <feDisplacementMap
      in2="turbulence"
      in="SourceGraphic"
      scale="50"
      xChannelSelector="R"
      yChannelSelector="G" />
  </filter>

  <circle cx="100" cy="100" r="100" filter="url(#displacementFilter)" />
</svg>

规范

规范
Filter Effects Module Level 1
# feDisplacementMapElement

浏览器兼容性

参见