CSSで width プロパティに auto を設定すると、img のwidth属性の指定が反映されない

imgタグで、width 属性を設定しても画像の表示幅が反映されない現象を紹介します。

概要

CSSのwidthプロパティがautoに設定されている場合、imgタグのwidth属性に値を設定しても画像の表示幅に反映されないです。

動作確認

ImageWidthConflict.html
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title></title>
  <link rel="stylesheet" href="ImageWidthConflict.css" />
</head>
<body>
  <h2>imgタグのwidth属性の動作確認</h2>
  <img src="sample.png" />
  <hr />
  <img width="600" src="sample.png" />
  <hr />
  <img class="TestImage" width="400" src="sample.png" />
</body>
</html>

ImageWidthConflict.css
.TestImage {
  width: auto;
}


画像は下図を利用します。

CSSで width プロパティに auto を設定すると、img のwidth属性の指定が反映されない:画像1

表示結果

上記のHTMLファイルをWebブラウザで表示します。下図のページが表示されます。
1つ目の画像は何も指定していないため、画像のサイズがそのまま表示されます。 2つ目の画像は、imgタグのwidth属性に 600 を指定しており、横幅600ピクセルで表示されます。 3つ目の画像も、imgタグのwidth属性に 400 が指定されていますが、Webブラウザの表示では、横幅400ピクセルでは表示されず、画像の元のサイズのまま表示されています。 imgタグのクラスでTsetImageが設定されており、TestImageクラスのスタイルシートで、width:auto; が指定されているため、imgタグのwidth属性の値が反映されない状態に なっています。

CSSで width プロパティに auto を設定すると、img のwidth属性の指定が反映されない:画像2

対処法

CSSのwidth:autoを除去します。またはimgタグのwidth属性ではなく、CSSのwidthプロパティ、またはstyle属性で画像の表示幅を設定します。

コード

以下のHTML、CSSのコードに変更します。

ImageWidthConflict.html
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title></title>
  <link rel="stylesheet" href="ImageWidthConflict.css" />
</head>
<body>
  <h2>imgタグのwidth属性の動作確認</h2>
  <img src="sample.png" />
  <hr />
  <img width="600" src="sample.png" />
  <hr />
  <img class="TestImage1" width="400" src="sample.png" />
  <hr />
  <img class="TestImage2" src="sample.png" />
  <hr />
  <img style="width:240px" src="sample.png" />
</body>
</html>

ImageWidthConflict.css
.TestImage1{
}

.TestImage2 {
  width:300px;
}

解説

1つめ、2つめのimgタグは先ほどのコードと同様です。 3つ目のimgタグは、TestImage1 クラスが指定されていますが、スタイルシートでは、TestImage1クラスには width:auto; の指定はありません。 また、4つ目のimgタグは、width 属性の指定をしない代わりに、TestImage2 クラスで、width:300px; の指定を追加し幅を指定しています。 5つ目のimgタグは、style属性で直接スタイルをimgタグに設定しています。

表示結果

上記のHTMLファイルをWebブラウザで表示します。下図のページが表示されます。
imgタグやCSSで設定した通りの幅で画像が表示されています。

CSSで width プロパティに auto を設定すると、img のwidth属性の指定が反映されない:画像3

このページのキーワード
  • CSS width属性 効かない
  • CSS width 反映されない
  • CSS width 動作しない
AuthorPortraitAlt
著者
iPentecのメインデザイナー
Webページ、Webクリエイティブのデザインを担当。PhotoshopやIllustratorの作業もする。 最近は生成AIの画像生成の沼に沈んでいる。
作成日: 2021-09-27
Copyright © 1995–2025 iPentec all rights reserverd.