【便利なCSS】min(), max(), clamp()使ってる?

弊社では今年のに入ってからIEのサポートをしなくてもよくなったので、
その他のブラウザで対応できるCSSを記述するようになりました。
IEのサポートがなくなっただけでも、技術者としては仕事がやりやすくなります。

今回ご紹介する便利なCSS、min(), max(), clamp()はIEはサポートしていませんが
そのほかのブラウザの最新バージョンであればサポートしているのでぜひ、マスターして使ってみてください。

CSS Values And Units Level 4には、
以下のような記述があります。

======================================================================
数学関数であるcalc()、min()、max()、clamp()は、加算(+)、減算(-)、
乗算(*)、除算(/)の数式をコンポーネント値として使用することができます。
======================================================================

なるほど、なるほど…となんとなくわかったようなわかってないような(笑)
具体的に使ってみるとわかると思います。
では、それぞれのご紹介から!

min()

min()は、1つ以上のカンマ区切りの計算を含みます。
この1つ以上の計算の数値が最大値を表すことになるため、
要素の最大幅を1280pxにしたい場合は、下記のように記述します。

※min-widthとごっちゃにならにように気を付けましょう。
 min-widthの場合は、指定した数値より小さくならないように指定します。

div {
  width: min(100%, 1280px);
}

max()

max()も上記と同様、カンマ区切りの計算を含みます。
この1つ以上の計算の数値で最小値を設定するため、
要素の最小幅を480pxにしたい場合は、下記のように記述します。

※max-widthとごっちゃにならにように気を付けましょう。
 max-widthの場合は、指定した数値より大きくならないように指定します。

div {
  width: max(50%, 480px);
}

clamp()

最後にclamp()です。
clamp()は、「最小値」&「推奨値」「最大値」を使用します。
要素の最小幅が480px、推奨幅が50%、最大幅が1280pxにする場合は、下記のように記述します。

div {
  width: clamp(480px, 50%, 1280px);
}

今日はさらっと説明しましたが、文字数を幅で固定したい場合にも使えたりします。
みなさんもどうぞ試し見てくださいね!