HTML IMGタグを使用してアスペクト比を維持する方法


132

アプリケーションの写真を表示するためにHTMLのimgタグを使用しています。高さと幅の両方の属性を64に設定しました。画像の解像度(256x256、1024x768、500x400、205x246など)を64x64として表示する必要があります。しかし、imgタグの高さと幅の属性を64に設定すると、アスペクト比が維持されないため、画像が歪んで見えます。

参考までに、私の正確なコードは次のとおりです。

<img src="Runtime Path to photo" border="1" height="64" width="64">


クリダム、この質問をするのは久しぶりだ。私はこの問題のために働いていたその会社を辞めました。そのときに期限を守るために他の優先事項に取り組んでいたため、提案された解決策を試すことができませんでした。それをさらに進めるチャンスはありませんでした。
sunil kumar 2015

回答:


134

高さと幅を設定しないでください。どちらかを使用すると、正しいアスペクト比が維持されます。

.widthSet {
    max-width: 64px;
}

.heightSet {
    max-height: 64px;
}
<img src="http://placehold.it/200x250" />

<img src="http://placehold.it/200x250" width="64" />

<img src="http://placehold.it/200x250" height="64" />

<img src="http://placehold.it/200x250" class="widthSet" />

<img src="http://placehold.it/200x250" class="heightSet" />


14
...しかし、高さと幅の両方を修正したい場合はどうなりますか?
fatuhoku 2016

7
これは動的アプリケーションには意味がありません。画像の比率に依存するため、幅または高さが64pxになるかどうかは不明です。なぜこれが賛成投票なのですか?
ケーニヒスベルク2018

@Märこの質問は、幅や高さの固定画像に関するものでした。応答性は質問の要件ではありませんでした。
カブ2018

3
サイズが固定されている質問は具体的には約たように、アスペクト比は、ではない任意の画像の任意の解像度。64x64未満の解像度を含みます。
ケーニヒスベルク2018

66

こちらがサンプルです

div{
   width: 200px;
   height:200px;
   border:solid
 }

img{
    width: 100%;
    height: 100%;
    object-fit: contain;
    }
<div>
  <img src="https://upload.wikimedia.org/wikipedia/meta/0/08/Wikipedia-logo-v2_1x.png">
</div>


8
このソリューションを使用したい人へのメモです。オブジェクトフィットはブラウザで十分にサポートされていません。IEやEdgeではまったくサポートされていません。出典:caniuse.com/#feat=object-fit
Sean Dawson

2
Edge 16+でサポートされるようになりました。次の
Eddy R.

44

widthおよびheightの画像をに設定しますが、およびのauto両方max-widthを制限しますmax-height

img {
    max-width:64px;
    max-height:64px;
    width:auto;
    height:auto;
}

フィドル

64x64pxの「フレーム」に任意のサイズの画像を表示する場合は、このフィドルのよう、インラインブロックラッパーとその配置を使用できます。


3
元のサイズを下回るだけで、元のサイズを超えて拡大縮小されません。
ケーニヒスベルク2018

40
<img src="Runtime Path to photo"
     style="border: 1px solid #000; max-width:64px; max-height:64px;">

2
これは、画像の向きとは無関係であり続けるため、正しい解決策です。3rror404のソリューションでは、画像が高さよりも広いか、またはその逆かを知る必要があります。
devios1 2013年

2
またwidth、およびheightに設定しautoます。
Mahmoodvcs 2015年

高さと幅の両方を制約する正しいソリューション。
Pavan Kumar

1
画像はこれによって適切に制限されますが、元のサイズを超えて拡大縮小れることはありません。オープニングポストからOPがどちらを望んだかは定かではありませんが。
ケーニヒスベルク2018

14

リストされている方法はどれも、希望のアスペクト比を維持しながら、ボックスに収まる最大サイズに画像を拡大縮小しません。

これはIMGタグでは実行できません(少なくともJavaScriptを使用しない限り)が、次のように実行できます。

 <div style="background:center no-repeat url(...);background-size:contain;width:...;height:..."></div>

2
はい。タグに使用style="background: url('_'); background-size: cover width:_px height:_px"<img>ます。
Ujjwal Singh 2014

3
ありがとう、@ UjjwalSingh。実際、画像サイズを最大化する必要はありcoverませんcontaincontain「レターボックス」につながります。
Ortwin Gentz 2017


3

画像をdiv64x64の寸法でラップし、画像に設定width: inheritします。

<div style="width: 64px; height: 64px;">
    <img src="Runtime path" style="width: inherit" />
</div>

1

表示したい画像の高さと幅を維持するために、別のCSSファイルを使用してみませんか?このようにして、必然的に幅と高さを指定できます。

例えば:

       image {
       width: 64px;
       height: 64px;
       }

1

これを試して:

<img src="Runtime Path to photo" border="1" height="64" width="64" object-fit="cover">

object-fit = "cover"を追加すると、アスペクト比を失わずに画像がスペースを占有します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.