もくじ
Webサイトで画像を表示する際、サイズがバラバラの画像を統一されたサイズで表示したいことがあります。
CSSのobject-fit
プロパティを使えば、画像のアスペクト比を保持しながら、指定したサイズに自動調整できます。
この記事では、object-fit: contain
とobject-fit: cover
の2つの方法を使って、画像サイズを自動調整する方法を紹介します。
サムネイル画像やギャラリー画像の表示でよく使われる手法なので、ぜひ参考にしてください。
object-fit: contain(画像全体を表示)とは
object-fit: contain
は、画像全体が指定した枠内に収まるように調整する方法です。
画像のアスペクト比を保持しながら、枠内に収まるようにリサイズされます。
画像の一部が切れることはありませんが、枠内に余白ができる場合があります。
以下の画像のように、画像全体が.photo-box
の枠内に収まるように調整されます。

object-fit: cover(画像をトリミング)とは
object-fit: cover
は、指定した枠を埋めるように画像をリサイズし、はみ出した部分を切り取る方法です。
画像のアスペクト比を保持しながら、枠を完全に埋めます。
画像の一部が切れる可能性がありますが、枠内に余白はできません。
以下の画像のように、長辺が.photo-box
の枠に収まるように調整され、.photo-box
の枠からはみ出した部分は切り取られます。

【サンプル】横長画像のobject-fit: containとobject-fit: cover
以下の横長画像を正方形の枠でobject-fit: contain
とobject-fit: cover
で表示してみます。

object-fit: contain

object-fit: cover

【サンプル】縦長画像のobject-fit: containとobject-fit: cover
以下の縦長画像を正方形の枠でobject-fit: contain
とobject-fit: cover
で表示してみます。

object-fit: contain

object-fit: cover

【実装コード】object-fit: contain で画像全体を表示
Copyをクリックするとコピーできます。
<div class="photo-box -inscribed">
<img src="image URL" alt="サンプル">
</div>
.photo-box {
box-sizing: border-box;
display: flex;
justify-content: center;
align-items: center;
width: 300px;
height: 300px;
border: solid 2px #ccc;
}
.photo-box img {
vertical-align: top;
}
.photo-box.-inscribed img {
width: 100%;
height: 100%;
object-fit: contain;
}
【実装コード】object-fit: cover で画像をトリミング
Copyをクリックするとコピーできます。
<div class="photo-box -circumscribed">
<img src="image URL" alt="サンプル">
</div>
.photo-box {
box-sizing: border-box;
display: flex;
justify-content: center;
align-items: center;
width: 300px;
height: 300px;
border: solid 2px #ccc;
}
.photo-box img {
vertical-align: top;
}
.photo-box.-circumscribed img {
width: 100%;
height: 100%;
object-fit: cover;
}
まとめ
CSSのobject-fit
プロパティを使うことで、画像のアスペクト比を保持しながら指定したサイズに自動調整できます。
object-fit: contain と object-fit: cover の使い分け
プロパティ | 特徴 | 適した使用場面 |
---|---|---|
object-fit: contain |
|
|
object-fit: cover |
|
|
実装時の注意点
object-fit
は画像要素(<img>
)に適用するプロパティです- 親要素に
width
とheight
を指定する必要があります - レスポンシブ対応する場合は、親要素のサイズを相対値(
%
やvw
など)で指定することをお勧めします
これらの方法を使い分けることで、様々なサイズの画像を統一されたデザインで表示できるようになります。
用途に応じて適切な方法を選択してください。