2016-08-20 4 views
10

私はポートフォリオのウェブサイトを構築しています。CSSの「幅」プロパティを使用してSVGイメージの縮尺を変更しないのはなぜですか?

HTMLコード

<div id = "hero"> 
    <div id = "social"> 
     <img src = "facebook.svg"> 
     <img src = "linkedin.svg"> 
     <img src = "instagram.svg"> 
    </div> 
</div> 

(SASSを使用して)CSSコード

#hero { 
    display: flex; 
    flex-direction: column; 
    justify-content: center; 
    align-items: center; 
    height: 300px; 

    #social { 
     width: 50%; 
     display: flex; 
     justify-content: space-between; 
     flex-wrap: wrap; 

     img { 
      width: 2em; 
     } 
    } 
} 

問題は、私はCSSにwidthプロパティを使用してSVGsのサイズを変更することはできませんよということです。ここで私は別の例で取得するものである:

img { width: 2em; }

enter image description here

img { width: 3em; }

enter image description here

img { width: em; }

enter image description here

divのhero divの中央に向かってアイコンがどのように崩壊するかをご確認ください。代わりに

、私はCSS heightプロパティを使用する場合:

img { height: 2em; }

enter image description here

img { height: 3em; }

enter image description here

img { height: 4em; }

0を

enter image description here

この動作は必要ですが、これが正しい方法であるかどうかはわかりません。なぜこれが起こるのですか? SVGイメージのサイズ変更の良い方法を知っていますか(特にフレックスボックスモデルを使用していますか?

+1

@Michael_B、ありがとう、私の間違い。 – harpo

答えて

18

SVGsは、PNG等のビットマップイメージとは異なります - それが定義のビューポートに合わせて調整されます - あなたがいるように見えるよう。 PNGのように直接スケールすることはありません。

imgwidthを大きくしても、高さが制限されていると、アイコンの高さが高くなりません。 imgは、幅の広いボックスに水平に中央揃えされた状態になります。

あなたの問題は、SVGの高さが固定されていることです。SVGファイルを開き、確認し、それらのいずれか:

  1. は何widthと定義されてheight、または
  2. widthheight "100%"に両方のセットを持っていない持っています。

あなたの問題を解決するはずです。そうでない場合は、あなたのSVGの1つをあなたの質問に投稿して、それがどのように定義されているかを見ることができます。

+0

あなたの答えは私の問題の解決策であるようです。ですからSVGの 'width'と' height'を指定しなければ問題なく拡張できます。 –

0

viewBoxプロパティを変更して、svgで高さと幅を正しく変更する必要があります。 svgの<svg>タグにあります。 SVGはviewBoxを持っている場合

https://developer.mozilla.org/en/docs/Web/SVG/Attribute/viewBox

+0

あなたがdownvoteに行く場合は、理由を教えてください。 –

+2

downvoteの私の推測では、ビューボックスを変更しても実際にはsvg要素は拡大されず、ビューポートのサイズが変更されるだけです。 – Marko

関連する問題