CSSで画像の表示方法を指定するobject-fitの使い方

当ページのリンクには広告が含まれています。
  • URLをコピーしました!
生徒

画像サイズをCSSでうまく調整できないです

先生

CSSのobject-fitプロパティの使い方を説明します

この記事でわかること
  • CSSのobject-fitプロパティの種類
  • object-fitプロパティでできること
目次

レイアウトに合わせた画像表示をしたい

WEBページのレイアウトに合わせて画像のサイズを調整したい場面はよく出てきます。

この記事では、画像の拡大縮小の仕方を指定できるCSSのobject-fitプロパティについて説明します。

object-fitプロパティについて

CSSのobject-fitプロパティは、自身や親要素のサイズに基づいて、画像を拡大縮小することができます。

拡大縮小時に縦横比を維持するかや、画像の当てはめ方を指定できます。

object-fitプロパティの種類

object-fitプロパティには、以下の種類があります。

プロパティ値説明
none元のサイズのまま
fill縦横比は無視して自身や親要素のサイズまで引き伸ばす(デフォルト
cover縦横比を維持して縦横いずれも埋まる最小サイズ
contain縦横比を維持して画像が全て表示される最大サイズ
scale-downnonecontainでサイズが小さい方
object-fitでは画像の切り取り位置は指定できない

object-fitプロパティは、画像の一部を表示する時に、画像のどこの位置を切り取って表示するかは指定できません。

画像を切り取る位置を指定するには、CSSのobject-view-boxを使用します。

noneは元の画像をそのまま表示

object-fit: none;は、何もせずに元の画像のまま表示します。

画像のサイズが表示する要素より大きくても小さくても、拡大や縮小はされずに元のサイズのまま表示されます。

画像サイズと表示する要素が同じサイズでないと、余白やはみ出しが生じます。

CSSの記述

CSS
/* 元の画像サイズのまま表示する */
.none {
  object-fit: none;
}

画像表示の例

画像が表示する要素より小さい場合

画像サイズが表示する要素より小さい場合、元の画像サイズで表示されることで余白ができます。

画像が表示する要素より大きい場合

画像が表示する要素より大きい場合、元の画像サイズで表示されることで、はみ出て表示されない部分ができます。

fillは縦横比を無視して引き伸ばす

object-fit: fill;は、画像の縦横比は無視して表示要素のサイズまで画像を拡大または縮小します。

画像の内容は全て表示されますが、縦横に歪みが生じるので、無地の画像以外だとかなり違和感が出ます。

CSSの記述

CSS
/* 画像を要素いっぱいに拡大または縮小して表示する */
.fill {
  object-fit: fill;
}

画像の表示例

画像が表示する要素より小さい場合

画像サイズが表示する要素よりも小さい場合、表示要素の形に合わせて画像が拡大されます。

画像が表示する要素より大きい場合

逆に、元の画像サイズが表示要素よりも大きい場合は、表示要素の形に合わせて画像が縮小されます。

coverは縦横比を維持して全体を覆える大きさにする

object-fit: cover;は、縦横比を維持したまま、表示する要素をすべて覆えるギリギリのサイズまで画像を拡大または縮小します。

画像と表示する要素の縦横比が違う場合、縦または横のはみ出る部分は切り取られます。

画像の縦と横のサイズの片方は表示する要素と同じ、もう片方は表示する要素以上のサイズになります。

CSSの記述

CSS
/* 表示する要素をすべて覆えるサイズにする */
.cover {
  object-fit: cover;
}

画像の表示例

画像が表示する要素より小さい場合

画像サイズが表示する要素よりも小さい場合は、縦横比を維持したまま表示する要素すべてを覆える最小の大きさまで拡大します。

画像が表示する要素より大きい場合

画像サイズが表示する要素よりも大きい場合、縦横比を維持したまま表示する要素すべてを覆える最大の大きさに縮小します。

containは縦横比を維持してすべてが収まる大きさにする

object-fit: contain;は、縦横比を維持したまま、画像がすべて表示できるギリギリのサイズまで画像を拡大または縮小します。

画像と表示する要素の縦横比が違う場合、表示する要素に余白ができます。

画像の縦と横の片方は表示する要素と同じサイズ、もう片方は表示する要素以下のサイズになります。

CSSの記述

CSS
/* 表示要素に画像がギリギリ収まるまで画像を拡大または縮小する */
.contain {
  object-fit: contain;
}

画像が表示する要素より小さい場合

画像のサイズが表示する要素よりも小さい場合、画像の内容がすべて表示できる最大の大きさまで縦横比を維持して拡大します。

画像が表示する要素より大きい場合

画像のサイズが表示する要素よりも大きい場合、画像の内容がすべて表示できる最大の大きさまで縦横比を維持して縮小します。

scale-downは縦横比を無視して引き伸ばす

object-fit: scale-down;は、画像と表示する要素の大きさによって動きが変わります。

画像サイズが表示する要素より大きい場合、縦横比を維持して収まるサイズまで縮小します。

object-fit: contain;と同じ動きです。

画像のサイズが表示する要素より小さい場合は元の画像サイズのまま表示します。

object-fit: none;と同じ動きです。

CSSの記述

CSS
/* 画像がはみ出さないように縮小する */
.scale-down {
  object-fit: scale-down;
}

画像が表示する要素より大きい場合

画像のサイズが表示する要素よりも大きい場合、縦横比を維持したまま表示する要素に収まるギリギリの大きさまで縮小します。

画像が表示する要素より小さい場合

画像のサイズが表示する要素よりも小さい場合、元の画像をそのまま表示します。

画像と表示する要素のサイズが同じでなければ、表示する要素の縦や横に余白ができます。

まとめ

object-fitの各プロパティによる動作の内容をまとめると以下になります。

プロパティ拡大縮小はみ出し余白
none
fill
cover
contain
scale-down
よかったらシェアしてね!
  • URLをコピーしました!
目次