2013-04-09 11 views
6

複数のSVGタグがあり、それぞれが同じIDを持つ異なるクリップパスを定義するとします。複数のSVGタグ内のclipPath

<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タグ内の要素ができる唯一の参照の定義と思ったが、それはケースのように思われない:

  • クローム26:circleクリップパスを2回使用します。
  • Firefox 17:rectクリップパスを2回使用します。
  • Safari 6:rectと1つのcircleクリップパスが予想通りにレンダリングされます。

ときhide one of the SVG tags ChromeとSafariは、その後完全clip-pathをドロップするので、それは奇妙な取得します。

clipPathのIDが異なる場合でも動作することはわかっていますが、そのようになっていますか?私が見るところでは、specには問題に関する情報が含まれていません。何をやっている

答えて

4

は、これが直接、この特定の問題に対処http://www.w3.org/TR/2008/REC-xml-20081126/を参照http://www.w3.org/TR/SVG/struct.html#IDAttributeごとに無効である...型IDの

値はName生成と一致しなければなりません。名前は、この型の値としてXML文書に複数回現れてはならない(MUST NOT)。すなわち、ID値はそれらを負う要素を一意的に識別しなければならない(MUST)。

+2

仕様への参照のために上書きされています。それは技術的には正解ですが、SVGドキュメントがページにどのように埋め込まれているかという状況においても、かなり精神的な動作です。 SVGはさまざまなソースから引き出されることが多く、潜在的な衝突を避けるためにすべての名前空間を解析して再疑似名前空間にする必要があります。 –

+0

また、html doc(非xml)の中に2つの別々のsvg docs(xml)があることを考えると、それは同じ仕様に当てはまりますか? –

+0

文書は1つだけです。 –

関連する問題