【HTML+CSS】object-fitとobject-position、overflowとpositionで画像をトリミング表示

bject-fitとobject-position、overflowとpositionで画像をトリミング表示

アイコンや写真などの一部分をマスクして(切り取って)サムネイル画像に表示したいときに使えるのがobject-fitとobject-position。

object-fit: cover; でアイキャッチ画像に使うことしか知らなかったが、この2つを組み合わせて使えば大抵うまくいくらしい。

オリジナル画像

オリジナル画像を下のようなサムネイル画像として表示したい。

サムネイル画像
<figure>
  <img src="" alt="">
</figure>
figure {
  width: 330px;
  height: 280px;
  border-radius: 20px;
}

img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: 40% 100%;
}

border-radiusはimgではなくfigureに記述する。
画像がはみ出るときはfigureにoverflow: hidden;ではみ出たところは隠れる。

figure {
  overflow: hidden;
  width: 300px;
  height: 200px;
  position: relative;
}

img {
  width: 100%;
  height: auto;
  position: absolute;
  top: 50%;
  left: 50%;
  -webkit-transform: translate(-50%, -50%);
  -ms-transform: translate(-50%, -50%);
  transform: translate(-50%, -50%);
}

positionで画像の中央をトリミングして表示することができる。