object-fit

画像や動画を、枠に合わせて引き伸ばすか、比率を保って収めるか、切り抜くかを指定するプロパティ。 背景画像とbackground-sizeで切り抜いていた画像を、imgのまま表示できます。

今の書き方

画像を<img>のまま、枠いっぱいに切り抜いて表示できます。 中央で切り抜く場合は、位置の指定も要りません。

.thumbnail {
  width: 200px;
  height: 200px;
  object-fit: cover;
}
<img class="thumbnail" src="photo.jpg" alt="商品の写真" />

以前の書き方

画像を背景にして、background-size: coverで切り抜いていました。 HTMLが画像ではなくdivになるため、代わりのテキストを付けるにはrole="img"とaria-labelが必要でした。

.thumbnail {
  width: 200px;
  height: 200px;
  background-size: cover;
  background-position: center;
}
<div
  class="thumbnail"
  role="img"
  aria-label="商品の写真"
  style="background-image: url(photo.jpg)"
></div>

置き換えるときの注意点

  • object-fitが効くのは、<img>や<video>のような置換要素だけです。 divの背景画像は、<img>に書き換えます。
  • object-positionの初期値は中央(50% 50%)です。 background-positionの初期値は左上(0% 0%)なので、以前の書き方でcenterを指定していた場合は、置き換えたあとは書かなくて構いません。 中央以外で切り抜くときは、object-positionで位置を指定します。
  • 効果が出るのは、枠の比率が画像の比率と違うときだけです。 枠の幅と高さを両方決めるか、aspect-ratioで比率を決めます。
  • <img>に戻すと、alt・loading="lazy"・srcsetをそのまま使えます。

Browser Support

  • Chrome

    v32+
    2014-01-14
  • Edge

    v79+
    2020-01-15
  • Safari

    v10+
    2016-09-20
  • Safari (iOS)

    v10+
    2016-09-13
  • Firefox

    v36+
    2015-02-24

機能名やコードで検索できます

例:aspect-ratio、:has()、padding-top

別の言葉や、プロパティ名で試してください

検索を読み込めませんでした