CSSで画像の最大幅を設定する方法


85

私のウェブサイトでは、ユーザーがアップロードした画像を特定のサイズ(width: 600px)の新しいウィンドウに表示したいと思います。問題は、画像が大きくなる可能性があることです。したがって、これらよりも大きい場合は600px、アスペクト比を維持したままサイズを変更したいと思います。

max-widthCSSプロパティを試しましたが、機能しません。画像のサイズは変更されません。

この問題を解決する方法はありますか?

HTML

<div id="ImageContainerr">
    <img src="DisplayImage.do?ad_id=${requestScope.advert.id}" class="Image" />
</div>

CSS

img.Image { max-width: 100%;}
div#ImageContainer { width: 600px; }

max-width: 600px画像の設定も試みましたが、うまくいきません。画像はサーブレットからストリーミングされます(Tomcatのwebappsフォルダーの外部に保存されます)。


1
自動スケールダウンしたい場合は、設定するだけで、設定max-widthしないmax-heightでください。そうでない場合は、コードを投稿して、他の人が問題を見つけるのを手伝ってくれるようにしてください。
Ray Cheng

2
私はあなたの例を試しましたが、ここで機能します。この例の実際のhtml( "ImageContainerr")に同じタイプミスがないことを確認しますか?
リスター氏2012年

くそー、その通りです。Tomcatとブラウザを再起動し、再試行しましたが、実際に正常に動作します。とにかくありがとう:)タイプミスはそうではありませんでした-私はここでIDとクラス名を変更したので理解しやすくなりました。
user1315305 2012年

3
このことから、Firebugやその他の開発者ツールを使用していないと思います。Firebugを入手して、その使い方を学ぶことをお勧めします。(これらの2つの要素を調べると、幅がコンテナーに追加されていないことが
わかり

2
警告:この質問は、最初に表示されるよりもはるかに広く適用できません。多くの賛成票があったのは、idここがCSSと一致しなかったことを賛成票が見逃したためかもしれません。書かれているように(20151201)、この質問は「どのDOMオブジェクトとも一致しないCSSセレクターは外観に影響を与えない」に要約されます。; ^)(質問を編集して、そのタイトルが何を意味するのかを尋ねる方がよいかどうかは
わかり

回答:


135

あなたはこのように書くことができます:

img{
    width:100%;
    max-width:600px;
}

これを確認してくださいhttp://jsfiddle.net/ErNeT/


どうもありがとう!それは完璧に機能します!編集:まあ、正確ではありません-それは600pxよりも小さい画像のサイズも変更します-そしてそれは私が望まないものです。
user1315305 2012年

3
私は反対票を投じました。OPが望んでいるのは、あなたが提供するものではありません。また、OPのコードに問題がある可能性があることも理解しておく必要があります。通常、彼が試したことは機能するはずです。投票した人は、理由を教えてください。ありがとう。
Joonas 2012年

1
@Lolleroの最初のOPは、私の回答の後に彼の質問を編集します。私の回答の何が問題になっているのか説明できますか?ありがとう
sandeep 2012年

2
これはIEのアスペクト比を保持しません
Cocowalla 2013年

1
「幅:100%」の目的は何ですか?リンクされたフィドルはそれがなくてもうまくいくようですか?(Mac OX上のFirefoxおよびSafariでテスト済み)
Jon Schneider

13

私はこれが最終的なものとして答えられていないようです。

最大幅が100%、幅が600であることがわかります。それらを反転します。

簡単な方法も次のとおりです。

     <img src="image.png" style="max-width:600px;width:100%">

私はこれを頻繁に使用しますが、個々の画像を制御することもできますが、すべてのimgタグに含めることはできません。以下のようにCSSすることもできます。

 .image600{
     width:100%;
     max-width:600px;
 }

     <img src="image.png" class="image600">

5

問題は、imgタグがインライン要素であり、インライン要素の幅を制限できないことです。

したがって、最初にimgタグの幅を制限するには、それをインラインブロック要素に変換する必要があります

img.Image{
    display: inline-block;
}

3

コンテナの幅が600pxの場合。

それよりも大きな画像だけを中に収めたい場合は、次を追加します。CSS:

#ImageContainer img {
    max-width: 600px;
}

すべての画像に使用可能な(600px)スペースを使用させたい場合:

#ImageContainer img {
    width: 600px;
}

また、OPに関するコメントは、CSSファイルで間違ったIDを使用していることを示しています。div#ImageContainerは<div id = "ImageContainerr">と同じではありません
Leo Armentano 2016年

1

これを試して

 div#ImageContainer { width: 600px; }
 #ImageContainer img{ max-width: 600px}

1
それは正しくありません。セレクターは「Image要素内のimg要素」を意味します。
リスター氏2012年

0

あなたのCSSはほぼ正しいです。display: block;画像のCSSが欠落しているだけです。また、IDに1つのタイプミスがあります。そのはず<div id="ImageContainer">

img.Image { max-width: 100%; display: block; }
div#ImageContainer { width: 600px; }
<div id="ImageContainer">
    <img src="http://placehold.it/1000x600" class="Image">
</div>

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