You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用SVG feGaussianBlur与radialGradient实现中心清晰边角模糊效果

问题排查与修正

你代码的核心错误是radialGradient径向渐变不能直接作为SVG滤镜的输入源,滤镜只能识别滤镜原语的输出结果,你需要先用feImage节点引入定义好的径向渐变,再传给feComposite做合成。

具体修改步骤如下:

  • 把<radialGradient>从<filter>节点内移到<defs>下,和<filter>平级,渐变本身不属于滤镜原语,不能放在filter标签内。
  • 在filter内新增<feImage>节点,通过xlink:href引用你定义的径向渐变,作为遮罩层输入。
  • 调整渐变透明度范围和feMerge层级,保证中心显示原始清晰图像、边缘叠加模糊效果。

修正后的可运行代码如下:

<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="100%" height="100%">
  <defs>
    <!-- 径向渐变移到filter外平级放置 -->
    <radialGradient id="radialGradient" cx="50%" cy="50%" r="50%" fx="50%" fy="50%">
      <stop offset="70%" stop-color="white" stop-opacity="0" />
      <stop offset="100%" stop-color="white" stop-opacity="1" />
    </radialGradient>

    <filter id="blurlayer" width="100%" height="100%">
      <feGaussianBlur stdDeviation="8" result="blur" />
      <!-- 用feImage引入径向渐变作为遮罩 -->
      <feImage xlink:href="#radialGradient" result="mask" width="100%" height="100%" />
      <!-- 用渐变把模糊层的中心区域挖空 -->
      <feComposite in="blur" in2="mask" operator="in" result="comp" />
      <!-- 底层放原始清晰图,上层叠加边缘模糊层 -->
      <feMerge>
        <feMergeNode in="SourceGraphic" />
        <feMergeNode in="comp" />
      </feMerge>
    </filter>
  </defs>

  <image filter="url(#blurlayer)" x="0" y="0" width="100%" height="100%" xlink:href="https://www.wildtextures.com/wp-content/uploads/wildtextures-grey-felt-texture.jpg"/>
</svg>

补充注意事项

该方案在Chrome、Edge、Safari等主流浏览器上运行正常,但在Firefox浏览器中渲染Three.js场景时会出现明显卡顿,可根据目标用户群体酌情选用。

内容的提问来源于stack exchange,提问作者morph3us

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 02:24:04