様々なデバイス対応をしなければいけない昨今、フォントサイズの指定は悩みどころだったりしますね。
そこで『clamp()』関数を使用すれば1行でフォントサイズの最小値、基準値、最大値を指定することができ、使いようによってはメディアクエリで細かく指定する手間が省けます。
clamp()を実際に使ってみよう
では実際の挙動を見てみましょう。例えば2vwを基準値としたいとき、PCぐらいの表示だと大きすぎるので最大値を20pxに、スマホぐらいの表示だと小さくなりすぎないように最小値を14pxにという風に指定します。
1 |
font-size: clamp(14px, 2vw, 20px); |
たったこれだけで14px~20pxの間で、2vwを基準にしつつ可変にしてくれます。
widthやmax-width、min-widthをフォントサイズで、1行で済ませるというイメージです。
実際の画面はこんな感じです。
(こちらで画面サイズを変えたほうがわかりやすいです)
See the Pen
Untitled by kkdd (@kk8kk)
on CodePen.
clamp()関数はフォントサイズ以外にも使える
フォントサイズで散々紹介してきましたが、実は普通にdivのボックスなどさまざまな場面で使えます。要は先ほどの
widthやmax-width、min-widthをフォントサイズで、1行で済ませるというイメージです。
というのをさまざまな場面で使えるので結構便利です。
例えば基準を94%、ウィンドウサイズを大きくしたときは最大値を1120pxに、ウィンドウサイズを小さくしたときは最小で200pxとします。
1 |
width: clamp(200px, 94%, 1120px); |
実際の画面を見てみましょう。
(こちらで画面サイズを変えたほうがわかりやすいです)
See the Pen
clamp関数を使う-divでの例 by kkdd (@kk8kk)
on CodePen.
最小値によってはスマホ表示あたりはメディアクエリとの併用が必要になる場合もあると思いますが、大きな画面のみのレイアウトのことを考えると崩れの防止などにうまく使えると思います。
基準値に対して最大値か最小値だけ設定したい
この説明の中で最大値か最小値どちらかでいいんだけどな…という場合もあると思います。そんな時はmax()とmin()関数もあります。
max関数
width: max(基準値, 最大値);の形で指定します。先ほどの例だと
1 |
width: max(94%, 1120px); |
となります。
min関数
width: min(基準値, 最大値);の形で指定します。先ほどの例だと
1 |
width: min(94%, 200px); |
となります。
フォントサイズはともかく、単純なレイアウトだったらこちらの方が活躍してくれるかもしれません。
———
clamp()とmax()とmin()、それぞれうまく使い分けていきましょう!