早速実装
aspect-ratio
を使う
<div class="img-list">
<img src="~~~" class="img-list__item" />
<img src="~~~" class="img-list__item" />
<img src="~~~" class="img-list__item" />
</div>
<style>
.img-list {
display: flex;
flex-wrap: wrap;
gap: 10px;
max-width: 500px;
}
.img-list__item {
width: 32%;
aspect-ratio: 1 / 1;
object-fit: cover;
border-radius: 8px;
}
</style>
aspect-ratioはその名の通りアスペクト比を指定できるスタイルで、aspect-ratio: {横} : {縦}
で指定できる
そのためaspect-ratio: 1 : 1
を指定すると正方形になってくれる
デモ



widthが%のレスポンシブな画像を正方形で表示したい...
調べてみるとpadding-topを使った事例がたくさんあるので早速やってみる
...が、上に余白ができるだけで正方形にならない...
どうやらアスペクト比を指定できるスタイルが全ブラウザで使用可能になったらしいのでそれを使ってみた