2013-06-30 21 views
7

Çemberin sağ yarısının bir dikdörtgene göre kırpılması gereken hemen hemen aynı kod parçalarına sahibim. İlk örnekte, tüm iyi çalışıyor: İkinci birindeSVG clipYolu ve dönüşümler

<svg> 
    <clipPath id="cut"> 
     <rect width="100" height="100" x="100" y="50"></rect> 
    </clipPath> 

    <circle class="consumption" cx="100" cy="100" clip-path="url(#cut)" r="50"></circle> 
</svg> 

jsfiddle

olsa da, konumunu belirtmek için daireyi bir çeviri kullanıyorum zaman, hiçbir şey artık gösterilmiştir.

<svg> 
    <clipPath id="cut"> 
     <rect width="100" height="100" x="100" y="50"></rect> 
    </clipPath> 

    <circle class="consumption" transform="translate(100,100)" clip-path="url(#cut)" r="50"></circle> 
</svg> 

jsfiddle

Neden ? Bu dönüşüm, clipPath'a da uygulandığından,

cevap

9

. SVG specification...

itibaren

Eğer clipPathUnits = "UserSpaceOnUse", 'clipPath' içeriği 'clipPath' eleman başvuruda bulunulan anda ve yerde koordinat sistemi geçerli kullanıcı değerleri temsil (yani , 'clipPath' elemanına 'clip-path' özelliği üzerinden referans veren eleman için kullanıcı koordinat sistemi. ‘clipPathUnits’ özniteliği belirtilmediyse, efekt 'userSpaceOnUse' değeri belirtilmiş gibi belirtilir.

+1

Teşekkürler, bu yüzden "rect" in x ve y konumunu, "dairenin" çevrilmiş konumuna göre belirtmem gerekiyor: http://jsfiddle.net/fA9y4/4/ – wnstnsmth

+1

Peki ya pidPathUnits = "ObjectBoundingBox"? Chrome ve Firefox'un başka bir soru sorduğunda, sadece bir örnekle [ayrı ayrı sorma] (http://stackoverflow.com/questions/ask) çekinmeden, clipPath ... – Tincho

+1

@Tincho’yu görmezden gelebilirsiniz. . –