CSS Gridにおけるminmax()関数は、要素サイズの最小値と最大値を定義することができるCSSです。
普段の業務であまり「display: grid;」を使用する頻度はあまり高くないのですが、使用することはあるので
今日はこのminmax()の使い方を整理しておこうと思います。
ちなみに…私個人としてはこのminmax()関数、すごく便利だと思ってます。
みなさんにもどんなに便利かを知ってもらえたらうれしいです。
minmax(min, max)の定義は下記のようになります。
.block { display: grid; grid-template-columns: minmax(min, max) minmax(min, max) minmax(min, max); }
上記のような形で「最小(min)以上および最大(max)以下」のサイズを定義できます。
例えば3カラムのグリッドがあるばあい、同じサイズに区切るには下記のように設定します。
.block { display: grid; grid-template-columns: minmax(200px, 1fr) minmax(200px, 1fr) minmax(200px, 1fr); }
See the Pen minmax() by sayuri (@giraffeweb) on CodePen.light
ただこの場合レスポンシブには対応してません。
単純に上記を実装するならdisplay: flex;がよいと思います。
ではどんな時に使用するのか?
例えば、以下のような場合。
1つ目のブロックは最小300~600px、それ以降のブロックはあまりの幅で等幅に振ってね!ということで
「1fr」を設定してます。
.block { display: grid; grid-template-columns: minmax(300px, 600px) 1fr 1fr; }
See the Pen minmax()2 by sayuri (@giraffeweb) on CodePen.light
ちなみに…
minmax(min,max)のminの値がmaxの値より大きい場合はminの値のみ有効になります。
基本的には小→大の順で書くようにしましょう。
minmax()でレスポンシブ対応のカードデザインを作成してみましょう!
See the Pen minmax()3 by sayuri (@giraffeweb) on CodePen.light
.box { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); grid-gap: 1rem; }
さくっと実装できましたね!
みなさんもdisplay:gridを使用する機会があればぜひ試してみてください!
P.S.
中途半端なブログの内容になってしまいました…
もう少し知識が増え次第、この記事はバージョンアップしていきます!