2013-07-06 21 views
25

簡単にサイズを変更できる流体SVGキャンバスを作成しようとしています。これまでのところ私はどこでもパーセンテージを使用しています。しかし、SVG polygonpathは、point属性のパーセンテージをサポートしていないようです。ここでは例です:パーセンテージ単位をサポートするSVGポリゴンポイント

(jsFiddle)

<svg width='90%' height='90%' style='background-color: whitesmoke'> 
    <rect x='40%' y='40%' width='25%' height='25%' /> 

    <polygon points="0,0 0,100 30,20 30,0" /> 
    <polygon points="30,0 30,20 60,0 60,0" /> 
    <polygon points="60,0 60,0 90,30 90,0" /> 
</svg> 

しかし、私はそれがコンソールに解析エラーで失敗する割合にpoints属性で番号を変更し始めた場合。私は<svg>要素でサイズ変更できるポリゴンを持つ方法を探しています。

+0

可能な複製[emsでSVGポリゴンをどのようにスケールするのですか?](http://stackoverflow.com/questions/8515524/how-do-i-scale-an-svg-polygon-in-ems) –

答えて

40

と(どんなサイズの)コンテナ要素は、私はあなたが探している効果を実現することができると思う:http://jsfiddle.net/davegaeddert/WpeH4/

<div id="svg-container" style="width:100%;height:100%;"> 
    <svg width='100%' height='100%' viewBox="0 0 100 100" preserveAspectRatio="none" style='background-color: whitesmoke'> 
     <rect x='40%' y='40%' width='25%' height='25%' /> 

     <polygon points="0,0 0,100 30,20 30,0" /> 
     <polygon points="30,0 30,20 60,0 60,0" /> 
     <polygon points="60,0 60,0 90,30 90,0" /> 
    </svg> 
</div> 

あなたはビューボックスに0 0 100 100の大きさを与える場合、ポイントは割合のように書くことができ、形状はSVGで拡大します。

+6

大変ですが、残念ながら、線のサイズ(ストローク幅)も伸びます) – FlorianB

+5

@FlorianB - 属性vector-effect = "non -scaling-stroke "はそれを解決するはずです。 –

+1

素晴らしいですが、それはsqareの権利としてそれを保持しますか? フルスクリーン(ほとんどの場合は水平比率)を使用したい場合は、ソリューションはありますか? –

1

あなたはグループの要素を一緒gとトランスフォームを使用することができます:ビューボックスを使用することにより

<svg width='90%' height='90%' style='background-color: whitesmoke'> 
    <rect x='40%' y='40%' width='25%' height='25%' /> 

    <g transform="scale(0.4 0.4)"> 
     <polygon points="0,0 0,100 30,20 30,0"/> 
     <polygon points="30,0 30,20 60,0 60,0"/> 
     <polygon points="60,0 60,0 90,30 90,0"/> 
    </g> 
</svg> 
+0

それは助けにはならない。最後に、90ピクセル幅のポリゴングループを45ピクセルの固定数に拡大しました。私が必要とするのは、何かが 'svg'要素でサイズ変更されることです。今は 'rect'がそうしているので、何も固定されていません。私は 'ポリゴン'で三角形を持っていると仮定しますが、どうやって同じように振る舞いますか? ''あなたは私が意味するものを得るでしょう。 –

+1

'viewBox'を使用できませんか?それはすべてを自動的に拡大/縮小します。 – simonzack

+0

OK 'viewBox'ちょっと、それは私が今' d3.js'バグのようなものを打つ。ありがとう! –

関連する問題