2016-04-13 14 views
0

<path> öğelerinin <svg> etiketi üzerinde preserveAspectRatio="none" neden olduğu gerilimi önlemek istiyorum. Ben <path> elemanlarına bu özellik ekleyerek neredeyse mükemmel bir çözüm buldum:, yolun deformasyonunu engeller tarafından korunur preserveAspectRatio = "none"

vector-effect="non-scaling-stroke" 

Ama onları da devre dışı ya da daha doğrusu onların stroke-width sabittir ve ölçeklenebilir değil transform="scale()" ile ölçeklenebilir olması gerekir. Yani, sorum şu: Gerilmesini engellemek için herhangi bir yol var mı, yoksa yakınlaştırma değil mi?

Tamam, daha açık hale getirmek için: https://codepen.io/lukydorny/pen/aNYOdW

farklı viewBox genişlik ve yükseklik (2 Image) ile bir yol şekil istiyorum ama dikey (3 görüntüsü) ile aynı genişlikte olması, yatay bir çizgi mi . Ve sonra keşke son resimde görebildiğiniz gibi, orijinal yolla (4. resim) aynı şekilde ölçeklendirebildim.

Nasıl yapılacağı herhangi bir yolu var mı?

+0

Burada sorunumu göstermek için örnek yaptım. https://codepen.io/lukydorny/pen/aNYOdW –

+0

"Germe değil, yakınlaştırma" ile ne demek istediğinizi tam olarak açık değil. Sen kodpen gerçekten yardım etmiyor. Ne yapmak istiyorsun? Belki de neyi başarmak istediğinizi gösteren bir görüntü ekleyebilirsiniz. –

+0

Her görüntüde başlık açıklanmaktadır. –

cevap

0

Evet, sadece böyle bir SVG öğesi tanımlayarak bunu başarabilirsiniz:

<svg 
    xmlns="http://www.w3.org/2000/svg" 
    version="1.1" 
    width="100%" 
    height="100%" 
    viewBox="0 0 1920 1080" 
    style="display:block"> 

    ... your SVG paths code here 

</svg> 

Bildirimi "ViewBox" boyutu "svg belgenin" boyutu olmalıdır (maksimum x ve maksimum y değerleri) .

Bu, tanımladığınız en boy oranını korur; Ancak, oluşturduğunuz yollarınızın tanımladığınız boyuta uygun olduğunu, aksi halde sorunlara neden olabileceğini unutmayın.

Tüm grafiği "yakınlaştırmak" için, sadece SVG öğesinin veya ana öğesinin genişlik & yüksekliğini veya SVG'nin içindeki "scale()" harfini veya normalde olduğu gibi JavaScript'i kullanın.

+0

Bu demek istediğim değildi. Bazı nedenlerden dolayı viewBox'ta değişken yüksekliğe sahip olmam gerekir. Bir durumda "0 0 1920 1080" ve "0 0 1920 540" diğerinde. Yol şeklinin değiştirilmesi arzu edilir. Benim sorunum, yolun yatay çizgide dikeyten daha geniş olmasıdır. ViewBox yüksekliği n-kat daha düşük olduğunda tam olarak n-kez daha geniş. –

+0

ViewBox boyutunu aynı anda değiştirmeyi deneyin, ne olduğunu görün. bilmek ilginç olurdu;) – argon

+0

Üzgünüm, ama "viewBox boyutu" ne demek istediğini anlamıyorum? –

İlgili konular