假设您有多个 SVG 标签,在每个标签中您定义了具有相同 ID 的不同剪辑路径。
<svg id="svg1" width="200" height="200">
<defs>
<clipPath id="nodeclipper">
<rect width="100" height="100" x="0" y="0" />
</clipPath>
</defs>
</svg>
<svg id="svg2" width="200" height="200">
<defs>
<clipPath id="nodeclipper">
<circle cx="20" cy="0" r="40" />
</clipPath>
</defs>
</svg>
我还做了一个JSFiddle。预期的行为是什么?我认为一个元素只能引用它自己的 SVG 标签内的定义,但事实并非如此:
- Chrome 26:
circle
两次使用剪辑路径。 - Firefox 17:
rect
两次使用剪辑路径。 - Safari 6:按预期渲染一个
rect
和一个circle
剪辑路径。
当您隐藏其中一个 SVG 标记时会变得很奇怪,因为 Chrome 和 Safari 会clip-path
完全放弃它。
我知道当clipPath
s 具有不同的 ID 时它可以工作,但它应该是这样吗?据我所知,规范不包含有关该问题的信息。