2012-01-23 14 views

cevap

22

Tek bir şeklin çeşitli bölümlerinin görsel stilini SVG'de değiştiremezsiniz (yok olan Vector Effects modülü). Bunun yerine, değiştirmek istediğiniz her kontur veya diğer görsel stil için ayrı şekiller oluşturmanız gerekir.

Özellikle, yerine <rect> veya <polygon> öğesi kullanılarak bu durum için oluşturabileceğiniz bir <path> yoksa sadece dikdörtgenin üç tarafı kapsar <polyline>:

<!-- Move to 50,50 then draw a line to 150,50, to 150,150, and then to 50,150 --> 
<path d="M50,50 L150,50 150,150 50,150" /> 
<polyline points="50,50 150,50 150,150 50,150" /> 

Burada eylem bu etkisini görebilirsiniz : http://jsfiddle.net/b5FrF/3/

fazla bilgi için Red square with stroke on three sides

,hakkında okumakve daha güçlü ama daha kafa karıştırıcı <path> şekilleri.

2

Üç konturlu taraf için bir polyline kullanabilirsiniz ve sadece stroku dikdörtgene yerleştirmeyin. SVG'nin bir yolun/şeklin farklı bölümlerine farklı vuruşlar uygulamanızı sağladığını düşünmüyorum, bu yüzden aynı efekti elde etmek için birden çok nesne kullanmanız gerekir.

132

Strok veya strok yapma gereksiniminiz varsa, bunu yapmak için stroke-dasharray kodunu da kullanarak dikdörtgenin kenarları ile eşleşecek şekilde çizgi ve boşluklar oluşturabilirsiniz.

rect { fill: none; stroke: black; } 
 
.top { stroke-dasharray: 0,50,150 } 
 
.left { stroke-dasharray: 150,50 } 
 
.bottom { stroke-dasharray: 100,50 } 
 
.right { stroke-dasharray: 50,50,100 }
<svg height="300"> 
 
    <rect x="0.5" y="0.5" width="50" height="50" class="top"/> 
 
    <rect x="0.5" y="60.5" width="50" height="50" class="left"/> 
 
    <rect x="0.5" y="120.5" width="50" height="50" class="bottom"/> 
 
    <rect x="0.5" y="180.5" width="50" height="50" class="right"/> 
 
</svg>

jsfiddle bakınız.

+24

Bu bambaşka parlak bir çözümdür. Keşke iki kere alabilirim. Teşekkür ederim. –

+1

Buna bayıldım, benim için de çalıştım. [github demosu] (http://nathanleiby.github.com/growthchart) hareket halinde görmek için bir noktaya gelin. – Nate

+1

Hot Lanet, bu zarif! – Roman