画像の幅を親divの100%にするが、それ自体の幅より大きくしない


125

画像(動的に配置され、寸法に制限はありません)を親divと同じ幅にしようとしていますが、その幅が100%の独自の幅よりも広くない場合に限ります。私はこれを試しましたが、役に立ちませんでした:

img {
    width: 100%;
    height: auto;
    max-width: 100%;
}

これらの画像の多くは親divよりも幅が広いため、それに応じてサイズを変更したいのですが、小さな画像がそこに表示され、通常の寸法を超えて拡大されると、本当にひどく見えます。これを行う方法はありますか?


5
指定した場合はどうなりますmax-width: 100%か?
フョードルソイキン2010

@フョードル・ソイキン-それを答えとしてください。投票します。
Gert Grenander 2010

ただし、どのブラウザーがmax-widthをサポートするかを検討するのは良いことです。
kbrimington 2010

kbrimingtonはテーブルに良いポイントをもたらします。reference.sitepoint.com/css/max-width#compatibilitysectionによると、 IE8の実装にはバグがあります。
Alfonso

回答:


221

max-width: 100%単独で指定するだけで十分です。


1
Chromiumは、コンテキストに関係なく、単に100%のままにするようです。たぶん、私はベータ版ソフトウェアでの自分の仕事を常に見るのをやめるべきです。ありがとうございました!
Alfonso、

max-width:100%を使用せずにこれを行うにはどうすればよいですか。React-Nativeでは、パーセンテージを使用することはできません。
Croolsby 2018

@Croolsbyリアクションネイティブでパーセンテージを使用できますが、この「100%」のような文字列値を使用できます
Rafael Hovsepyan

9

Googleの検索でこの投稿を見つけ、@ jwalの返信のおかげで私の問題は解決しましたが、私は彼の解決策に1つ追加しました。

img.content.x700 {
  width: auto !important; /*override the width below*/
  width: 100%;
  max-width: 678px;
  float: left;
  clear: both;
}

上記を使用して、max-widthを、画像が含まれているコンテンツコンテナーのサイズに変更しました。この場合は、コンテナーの幅-パディング-ボーダー=最大幅です。

このようにして、画像が含まれているdivから抜け出すことはなく、コンテンツdiv内で画像をフロートさせることができます。

IE 9、FireFox 18.0.2、Chrome 25.0.1364.97、Safari iOSでテストしましたが、動作するようです。

追加:私はこれを678px(最大幅)で表示される幅1024pxの画像と、500px(画像の幅)で表示される幅500pxの画像でテストしました。


1
使用したwidth:auto !important;画像は、そのコンテナとIE11は、画像を縮小ないより大きいだろうどこ私のためにIE11での問題を修正しました。これをimgセレクターで設定すると、IE11で問題がソートされました。ただしwidth:100%;、IE11では、他のルールなしで設定しても何も起こりませんでした。そのため、コンテナのサイズに画像を縮小するには、「オーバーライド」を含める必要があります。
lowtechsun 2017

3

幅を100%に設定すると、元のフルサイズのイメージではなく、divの全幅になります。JavaScriptや画像を測定できる他のスクリプト言語なしでは、これを行う方法はありません。あなたは(ワイド200pxのような)div要素の固定幅または固定の高さを持つことができる場合、すべきではない、あまりにもいっぱいに画像に範囲を与えることは難しいです。ただし、20x20ピクセルの画像を200x300ピクセルのボックスに入れても、画像は歪んでしまいます。


1
可能な場合は常に実際の例を提供してください。これをお勧めします。:)
bhb 2012年

1

ラインスタイルで-これはいつも私にとってうまくいきます

<div class="imgWrapper">
    <img src="/theImg.jpg" style="max-width: 100%">
</div>

0

最大幅を設定する必要があります。必要に応じて、側面の1つにパディングを設定することもできます。私の場合、max-width:100%は適切でしたが、画像は画面の端のすぐ隣にありました。

  max-width: 100%;
  padding-right: 30px;
  /*add more paddings if needed*/

0

私も同じ問題を抱えていましたが、CSSの高さの値をautoに設定して、問題を解決しました。また、displayプロパティを実行することを忘れないでください。

  #image {
      height: auto;
      width: auto;
      max-height: 550px;
      max-width: 1200px;
      margin-left: auto;
      margin-right: auto;
      display: block;
 }  

高さ:自動と幅:自動を削除できます。max-heightとmax-widthは同じものです。
Debbie Kurth



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