我在单独的文件中定义了一些 SVG 过滤器和标记,以在我的主要 SVG 内容中使用。
以下是文件 (dependency.svg) 中的示例:
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1">
<filter id="grayscale">
<feColorMatrix type="matrix" values="0.6666 0.3333 0.3333 0 0 0.3333 0.6666 0.3333 0 0 0.3333 0.3333 0.6666 0 0 0 0 0 1 0"></feColorMatrix>
</filter>
<marker id="Output" viewBox="0 -6 12 11" refX="10" markerHeight="8" markerWidth="8" orient="auto">
<path d="M0,-5L10,0L0,5L0,-5" stroke-width="1px" markerWidth="8" markerHeight="8" stroke="#696969" style="fill: rgb(105, 105, 105);"></path>
</marker>
当应用于一行时,以下内容在 Firefox 中有效:
marker-end: url("/path/to/dependencies.svg#Output");
但它在 Chrome 或 Opera 中不起作用。
当我尝试将过滤器应用于诸如<rect>
元素。
奇怪的是,我可以看到我的 dependency.svg 文件在两种情况下(firefox 和 webkit)都被加载,但是 webkit 没有执行任何操作。
我已经测试过这两者作为style
属性和filter
and marker-end
属性。在所有情况下 Firefox 都可以工作,而 Webkit 则不能。
这是 Webkit 的已知缺陷还是我错过了一些非常明显的东西?
编辑:我猜这可能是 Blink 问题(我一直说 Webkit,老习惯)