👋

【CSS】object-fitによって表示のズレた画像を調整する方法

2024/03/10に公開

object-fit で画像がずれる

object-fit: cover;は、CSSで設定したサイズに合わせて画像や動画を表示するために頻繁に使用されるプロパティです。

これは、コンテンツの一部が切り取られる仕組みのため、

  • 表示させたい部分ではなく、他の部分が表示される

といった問題が発生します。

problem.png

このような問題に対応するために、object-positionプロパティが存在します。

このプロパティでは、切り取られる部分の位置を調整することができ、表示させたい部分を表示させることができます。

object-position で画像の位置調整を行う

object-position プロパティは、ボックス内における画像や動画の配置を指定できます。

このプロパティでは、以下の設定方法が可能です。

  • percentage値:%
  • キーワード:top, bottom, right, left, center
  • length値:px, em など
  • オフセット値:bottom 20px のように設定する方法

※ プロパティの初期値は 50% 50% です。

ベースとなるCSS

img {
	width: ; // 画像の横幅
	height: ; // 画像の高さ
	object-fit: cover;
	object-position: ; // 値を入れる
}

% での位置調整

% 指定では、左端から 何%、上端から 何% と調整できます。

%は画像のサイズを基準に求められます。

値は 1つ または 2つ 設定でき、1つ目は「左右方向」2つ目は「上下方向」の位置を設定します。

// 左端から30%、上端から50%
object-position: 30% 50%;

object-30-50-percents.png

キーワードでの位置調整

キーワード指定では、上、下、左、右 のどれに寄せるかを調整できます。

// 画像を左端に寄せる
object-position: left;

object-left.png

// 画像を右端に寄せる
object-position: right;

object-right.png

px での位置調整

px などの絶対長の単位では、

  • 左端から 何px、上端から 何px の位置から画像が表示される

という設定になっています。

そのため、object-fit: cover; の時は通常、使用しません

object-position: 10px 20px;

object-10px-20px.png

オフセット値での位置調整

キーワード、数値を組み合わせて位置調整する方法です。

  • 「キーワード」の「何px」から画像を表示する

と設定します。

object-position: bottom 10px right 20px;

object-20px-10px.png

結論

object-fit: cover; で画像のサイズを整えた際に、表示位置を調整したい場合は、

object-position で簡単に調整できます。

Discussion