这只有在单个浏览器(Internet Explorer 10)中使用内联 SVG 才能直接实现,您使用“启用背景”属性并使用内置的“背景图像”源。这是您链接到的教程文本中显示的方法。
如果您的背景完全是图像,则有一种解决方法。您编写了一个过滤器,该过滤器使用 feImage 过滤器拉入背景中的相同图像,对它们进行模糊处理,然后将模糊合成到您想要在顶部显示的任何内容下。这是您链接到的教程的实际代码中使用的方法。
如果您的背景是其他 SVG 内容(文本、路径等),则没有跨浏览器的方式来实现您的效果,因为 Firefox 不支持将 SVG 对象作为 feImage 过滤器原语的输入。如果您不关心 Firefox,那么您可以使用与该教程用于图像的相同解决方法。
这是后者的一个例子 - 它非常接近你想要的,但我只在 Chrome/Windows 中测试过它(我知道它在 Firefox 中不起作用)
<svg x="0px" y="0px" width="500px" height="500px" viewbox="0 0 500 500">
<defs>
<filter id="blurry" x="-20%" y="-20%" height="140%" width="140%" primitiveUnits="userSpaceOnUse">
<feImage x="0" y="0" width="500" height="500" xlink:href="#squares" result="mySquares"/>
<feGaussianBlur stdDeviation="40" in="mySquares" result="blurSquares"/>
<feComponentTransfer in="blurSquares" result="morealpha">
<feFuncA type="linear" intercept=".8"/>
</feComponentTransfer>
<feComposite operator="in" in="morealpha" in2="SourceGraphic" result="clipBlur"/>
<feFlood x="10%" y="10%" width="80%" height="80%" flood-color="white" flood-opacity="0.6" result="whitesquare"/>
<feBlend mode="screen" in="clipBlur" in2="whitesquare"/>
</filter>
</defs>
<g id="squares">
<rect x="10" y="10" height="235" width="235" fill="red" />
<rect x="255" y="10" height="235" width="235" fill="green" />
<rect x="10" y="255" height="235" width="235" fill="blue" />
<rect x="255" y="255" height="235" width="235" fill="yellow" />
</g>
<rect filter="url(#blurry)" x="50" y="50" height="400" width="400" fill="rgb(255,255,255)" />
</svg>
(更新:最近的发现 - 您可以使用 javascript 将您想要提供给 feImage 的任何内容编码为 svg+xml 编码的数据 URI - 然后跨浏览器工作。超级丑陋。)