サムネイルの高さ、揃えたい!CSSの aspect-ratio が便利

同じ比率で並ぶ3枚のサムネイルとaspect-ratioの文字

記事一覧に写真を並べたら、縦長・横長が混ざって高さがバラバラ。そんなときに便利なのがCSSの aspect-ratio です。画像の表示枠を同じ比率に揃えれば、元画像を一枚ずつ加工する手間を減らせます。

幅に合わせて高さを決める

aspect-ratio: 16 / 9; は「幅16:高さ9」の指定。幅が320pxなら高さは180pxになります。正方形なら 1 / 1。画面幅に合わせてサイズが変わっても、同じ比率を保てます。

サムネイルを16:9で揃える例

<img class="thumbnail" src="photo.jpg" alt="作業机の写真">
.thumbnail {
  display: block;
  width: 100%;
  height: auto;
  aspect-ratio: 16 / 9;
  object-fit: cover;
}

.thumbnail を付けた画像が、親要素の幅いっぱいの16:9の枠になります。object-fit: cover は、画像自体を引き伸ばさず、枠を埋めるように表示する指定です。お知らせ一覧や制作実績のカードなど、写真の見え方を揃えたい場面で使いやすいですね。

効かないときと、切り抜きには注意

幅と高さを両方固定すると、aspect-ratio でサイズは決まりません。この例では高さを auto にしています。既存CSSに固定の高さがないかも確認しましょう。

また、cover では枠からはみ出す部分が切り抜かれます。人物の顔や商品が欠けていないかは要チェック。写真ごとに object-position で表示位置を調整する方法もあります。元画像の比率をそのまま見せたい画像には、一律で指定しないほうが安心です。

参考:MDN「aspect-ratio」/MDN「object-fit」