フロントエンドでなんとかがんばっていくブログ

Web制作CSSで固定サイズの枠の中に可変サイズの画像を上下中央配置させる方法

2020/10/01
2020/10/04

どんなサイズの画像が来るかわからないけど、固定エリアに上下中央に表示したい、そんな時のCSSの指定方法です。

やりたいこと

  • 画像を固定エリアに上下中央で表示する
  • 固定エリアよりも大きいサイズの画像の場合、はみ出さずに表示する
  • 画像の比率は保持する


解決方法

固定エリアのサイズを縦:200px 横:500px の場合。

html

<div class="outer_area">
<img src="hoge" class="inner_image" />
</div>


css

.outer_area {
display: flex;
justify-content: center;
align-items: center;
width: 500px;
height: 200px;
}
.inner_image {
width: auto;
height : auto;
max-width: 500px;
max-height: 200px;
}


ポイントは2つ。
「上下中央配置」と「固定エリアからはみ出さない」指定です。

「上下中央配置」はflexboxを使用します。
display: flex;
justify-content: center;
align-items: center;

「固定エリアからはみださない」ために、maxプロパティを指定します。
max-width: 500px;
max-height: 200px;

そして、デフォルトの画像サイズ指定として、widthとheightにautoを指定しておきます。
これで画像比率を保ったまま、固定エリアからはみ出すことなく画像を表示出来ます。

どんな時に使うのか

通常、画像は制作時に用意することがほとんどですが、CMSだと投稿者が用意することになります。
誰でも更新出来るようにCMSを導入するので、画像の比率を気にしてくれないこともよくあります。
そんなときにどんな画像が来てもレイアウトが崩れないようにCSSで調整してあげられるようにしておく必要があります。

上下中央配置について

今回は上下中央配置にflexboxを使用しましたが、他にも様々な指定方法があります。
一番モダンな方法としてはgridを用いる方法です。IE11での対応が必要な場合はCSS Gridは使用出来ないので注意です。