2013-04-09 14 views
6

Her birinde aynı kimliğe sahip farklı bir klip yolu tanımladığınız birden fazla SVG etiketiniz olduğunu varsayalım.clipPath birden çok SVG etiketinde

<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> 

Ben de bir JSFiddle yaptı. Beklenen davranış nedir? Ben bir eleman sadece kendi SVG etiketinin içinde tanımlarını referans düşünüyordu, ama bu durum görünmüyor:

  • Krom 26: circle klip yol iki kez kullanır.
  • Firefox 17: İki kez rect klip yolunu kullanır.
  • Safari 6: Bir rect ve bir circle klip yolunu beklendiği gibi işleyebilir.

Eğer hide one of the SVG tags Krom ve Safari sonra tamamen clip-path damla çünkü zaman garip olur.

clipPath s farklı kimliklere sahip olduğunda çalıştığını biliyorum, ancak bu şekilde mi olması gerekiyor? Gördüğüm kadarıyla spec, konu hakkında bilgi içermiyor.

cevap

4

Ne yapıyorsun bu direkt olarak bu belirli bir sorunu giderir http://www.w3.org/TR/2008/REC-xml-20081126/ başvuran http://www.w3.org/TR/SVG/struct.html#IDAttribute başına geçersiz ... tip kimliğinin

değerlerin Ad eşleşmesi GEREKİR. Bir ad, bir XML belgesinde bu türden bir değer olarak birden çok kez görüntülenmemelidir; Yani, ID değerleri, bunları taşıyan elemanları benzersiz şekilde tanımlamalıdır.

+2

Spesifikasyonların başvurusu için bir referans. Teknik olarak doğru olsa da, aynı zamanda SVG belgelerinin sayfaya nasıl yerleştirildiği bağlamında da oldukça zihinsel bir davranış. SVG'ler sıklıkla çeşitli kaynaklardan çekilir ve olası çatışmaları önlemek için her şeyi ayrıştırmak ve yeniden isimlendirmek zorunda olan kullanıcıya düşmek oldukça hoş olmayan bir durumdur. –

+0

Ayrıca, bir html doc (xml olmayan) içinde iki ayrı svg docs (xml) olduğu göz önüne alındığında, aynı özelliklerin altında mı kalıyor? –

+0

Sadece bir belge var. –

İlgili konular