画像サイズをCSSでうまく調整できないです
CSSのobject-fitプロパティの使い方を説明します
レイアウトに合わせた画像表示をしたい
WEBページのレイアウトに合わせて画像のサイズを調整したい場面はよく出てきます。
この記事では、画像の拡大縮小の仕方を指定できるCSSのobject-fitプロパティについて説明します。
object-fitプロパティについて
CSSのobject-fit
プロパティは、自身や親要素のサイズに基づいて、画像を拡大縮小することができます。
拡大縮小時に縦横比を維持するかや、画像の当てはめ方を指定できます。
object-fitプロパティの種類
object-fit
プロパティには、以下の種類があります。
プロパティ値 | 説明 |
---|---|
none | 元のサイズのまま |
fill | 縦横比は無視して自身や親要素のサイズまで引き伸ばす(デフォルト) |
cover | 縦横比を維持して縦横いずれも埋まる最小サイズ |
contain | 縦横比を維持して画像が全て表示される最大サイズ |
scale-down | none かcontain でサイズが小さい方 |
object-fit
では画像の切り取り位置は指定できないobject-fit
プロパティは、画像の一部を表示する時に、画像のどこの位置を切り取って表示するかは指定できません。
画像を切り取る位置を指定するには、CSSのobject-view-box
を使用します。
none
は元の画像をそのまま表示
object-fit: none;
は、何もせずに元の画像のまま表示します。
画像のサイズが表示する要素より大きくても小さくても、拡大や縮小はされずに元のサイズのまま表示されます。
CSSの記述
/* 元の画像サイズのまま表示する */
.none {
object-fit: none;
}
画像表示の例
画像が表示する要素より小さい場合
画像サイズが表示する要素より小さい場合、元の画像サイズで表示されることで余白ができます。
画像が表示する要素より大きい場合
画像が表示する要素より大きい場合、元の画像サイズで表示されることで、はみ出て表示されない部分ができます。
fill
は縦横比を無視して引き伸ばす
object-fit: fill;
は、画像の縦横比は無視して表示要素のサイズまで画像を拡大または縮小します。
CSSの記述
/* 画像を要素いっぱいに拡大または縮小して表示する */
.fill {
object-fit: fill;
}
画像の表示例
画像が表示する要素より小さい場合
画像サイズが表示する要素よりも小さい場合、表示要素の形に合わせて画像が拡大されます。
画像が表示する要素より大きい場合
逆に、元の画像サイズが表示要素よりも大きい場合は、表示要素の形に合わせて画像が縮小されます。
cover
は縦横比を維持して全体を覆える大きさにする
object-fit: cover;
は、縦横比を維持したまま、表示する要素をすべて覆えるギリギリのサイズまで画像を拡大または縮小します。
画像と表示する要素の縦横比が違う場合、縦または横のはみ出る部分は切り取られます。
CSSの記述
/* 表示する要素をすべて覆えるサイズにする */
.cover {
object-fit: cover;
}
画像の表示例
画像が表示する要素より小さい場合
画像サイズが表示する要素よりも小さい場合は、縦横比を維持したまま表示する要素すべてを覆える最小の大きさまで拡大します。
画像が表示する要素より大きい場合
画像サイズが表示する要素よりも大きい場合、縦横比を維持したまま表示する要素すべてを覆える最大の大きさに縮小します。
contain
は縦横比を維持してすべてが収まる大きさにする
object-fit: contain;
は、縦横比を維持したまま、画像がすべて表示できるギリギリのサイズまで画像を拡大または縮小します。
画像と表示する要素の縦横比が違う場合、表示する要素に余白ができます。
CSSの記述
/* 表示要素に画像がギリギリ収まるまで画像を拡大または縮小する */
.contain {
object-fit: contain;
}
画像が表示する要素より小さい場合
画像のサイズが表示する要素よりも小さい場合、画像の内容がすべて表示できる最大の大きさまで縦横比を維持して拡大します。
画像が表示する要素より大きい場合
画像のサイズが表示する要素よりも大きい場合、画像の内容がすべて表示できる最大の大きさまで縦横比を維持して縮小します。
scale-down
は縦横比を無視して引き伸ばす
object-fit: scale-down;
は、画像と表示する要素の大きさによって動きが変わります。
画像サイズが表示する要素より大きい場合、縦横比を維持して収まるサイズまで縮小します。
画像のサイズが表示する要素より小さい場合は元の画像サイズのまま表示します。
CSSの記述
/* 画像がはみ出さないように縮小する */
.scale-down {
object-fit: scale-down;
}
画像が表示する要素より大きい場合
画像のサイズが表示する要素よりも大きい場合、縦横比を維持したまま表示する要素に収まるギリギリの大きさまで縮小します。
画像が表示する要素より小さい場合
画像のサイズが表示する要素よりも小さい場合、元の画像をそのまま表示します。
まとめ
object-fit
の各プロパティによる動作の内容をまとめると以下になります。
プロパティ | 拡大 | 縮小 | はみ出し | 余白 |
---|---|---|---|---|
none | ||||
fill | ||||
cover | ||||
contain | ||||
scale-down |