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-14Edge
v79+2020-01-15Safari
v10+2016-09-20Safari (iOS)
v10+2016-09-13Firefox
v36+2015-02-24