【发布时间】:2015-12-23 22:12:44
【问题描述】:
以下代码适用于“页面 URL”==“基本 URL”的主页
但在任何其他页面上失败
<svg>
<filter id="blur">
<feGaussianBlur stdDeviation="5"></feGaussianBlur>
</filter>
<image id="svg-image" xmlns:href="http://x.com/image.jpg"
filter="url(#blur)">
</image>
</svg>
有没有办法从外部 svg 文件中引用“仅过滤器”?
例如:
1.外部文件@(http://localhost/somewhere/external.svg)
<svg>
<filter id="blur">
<feGaussianBlur stdDeviation="5"></feGaussianBlur>
</filter>
</svg>
2.HTML文档@(http://localhost/elsewhere)
<svg>
<image id="svg-image" xmlns:href="http://x.com/image.jpg"
filter="url(/somewhere/external.svg#blur)">
</image>
</svg>
【问题讨论】:
-
参考标题,可能最好不要这样做。
-
@RobertLongson 我的困境是 SVG 仅用于一个地方(但必要),而 BASE 则在整个站点范围内使用。所以我只想有一个解决方法,如果可能的话?
-
停止使用 base 或停止使用过滤器(或剪辑路径或标记或掩码)或停止使用 Chrome(或 IE、Safari 或 Opera)。
-
@RobertLongson 非常好,谢谢!
-
您的另一种选择是将所有 SVG 移动到单个独立文件中,然后通过
<object>或<iframe>标签将其嵌入,以便<base>标签位于不同的文档中,然后不会影响 SVG。
标签: html google-chrome svg filter blur