Załóżmy, że masz wiele tagów SVG, gdzie w każdej definiujesz inną ścieżkę klipu z tym samym identyfikatorem.clipPath w wielu tagach SVG
<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>
Wykonałem również JSFiddle. Jakie jest oczekiwane zachowanie? Myślałem, że element mógłby odwołać tylko definicje wewnątrz własnego tagu SVG, ale to nie wydaje się być w przypadku:
- Chrome 26: Używa
circle
ścieżkę klipu dwa razy. - Firefox 17: Używa ścieżki klipu
rect
dwa razy. - Safari 6: Renderuje jedną ścieżkę klipu
rect
i jednącircle
zgodnie z oczekiwaniami.
Robi się dziwnie, gdy hide one of the SVG tags, ponieważ Chrome i Safari całkowicie upuszczają clip-path
.
Wiem, że działa, gdy clipPath
s mają różne identyfikatory, ale czy ma tak być? O ile widzę, spec nie zawiera informacji o problemie.
Wznowienie pod uwagę w specyfikacji specyfikacji. Chociaż jest to technicznie poprawne, jest to również dość mentalne zachowanie w kontekście osadzania dokumentów SVG na stronie. Pliki SVG są często pobierane z różnych źródeł, a użytkownik musi sparsować i ponownie pseudo-przestrzeń nazw, aby uniknąć potencjalnych konfliktów, co jest dość nieprzyjazne. –
Ponadto, biorąc pod uwagę, że istnieją dwa oddzielne dokumenty svg (xml) wewnątrz dokumentu html (non-xml) - czy to jest objęte tą samą specyfikacją? –
Jest tylko jeden dokument. –