2017-03-30 4 views
0

インラインSVGベクトル作品のサイズを変更するにはCSSのみを使用しているため、すべてのアートワークのサイズが変更され、より小さい定義済みの幅&の高さに完全にフィットしますか?元のアスペクト比は維持すべきである。この場合、100x100pxボックスにアートワークのコンテンツをアイコンとしてサイズ変更します。スニペットの下では、内部コンテンツのサイズを変更するのではなく、ウィンドウを切り取っているように見えます。cssのみを使ってsvgコンテンツのサイズを変更するには?

svg { 
 
    width: 100px; 
 
    height: 100px; 
 
    fill: blue; 
 
    background-color: red; 
 
}
<svg> 
 
\t <polygon points="100,0 30,200 200,70 0,70 170,200"/> 
 
</svg> 
 

 
<svg > 
 
\t <polygon points="0,0 200,140 110,200"/> 
 
</svg> 
 

 
<svg> 
 
\t <ellipse cx="200" cy="70" rx="200" ry="40" /> 
 
</svg>

+0

ビットがありますが、SVGと高さにビューボックス属性が必要な場合があります:CSSでの自動車の割合をあなたの答えのために – Christopher

答えて

2

アスペクト比を維持し、SVGの容器を充填するために、100%の高さと幅を設定するビューボックスを追加します。この上のさび

svg{ 
 
    width:100px; 
 
    height:100px; 
 
    background-color: red; 
 
} 
 
svg * { 
 
    width: 100%; 
 
    height: 100%; 
 
    fill: blue; 
 
}
<svg viewbox="0 0 200 200"> 
 
    <polygon points="100,0 30,200 200,70 0,70 170,200"/> 
 
</svg> 
 

 
<svg viewbox="0 0 200 200"> 
 
    <polygon points="0,0 200,140 110,200"/> 
 
</svg> 
 

 
<svg viewbox="0 0 400 70"> 
 
    <ellipse cx="200" cy="70" rx="200" ry="40" /> 
 
</svg>

+0

感謝を保つために! '*'が 'svg *'の中で何を意味するのか説明してください。だから 'svg {}'と 'svg * {}'の違いは何ですか? – Sam

+0

また、ビューボックス番号が100ではなく200である理由についても説明してください。これは、それらのパスに関連しています。つまり、幅/高さで表示される実際のピクセルに完全に関係しませんか? – Sam

+0

私はあなたのすべてのパスを含めるので、私はあなたの一番高い番号を取っていました。 CSSの '*'は 'すべての要素'に等しいので、 'svg *'を実行すると、svg内のすべての要素が選択されます。 – llobet

関連する問題