【CSS数学関数】min(), max(), clamp()を使いこなそう!

公開日 :

  • コーディング

はじめに

こんにちは、アンドエイチエー コーディング部 新入社員のイガラシです。

皆さんは、CSSのプロパティに min(), max(), clamp() という関数があるのをご存知ですか?

これらはCSSの『数学関数』と呼ばれるもので、使用された関数に応じて複数の数値を比較し、最適な値を設定してくれます。

上手く使えば、動的なレイアウトをコーディングする際に非常に便利なプロパティだと思いますので、この機会に覚えて活用していきましょう!

対応ブラウザ

現時点では、IE11以外の主要ブラウザでサポートされているので、対応ブラウザは気にせずお使いいただけます。

(参考:Can I use… Support tables for HTML5, CSS3, etc

min() の使い方

min()最大値を取ることができる関数です。

min( VAL, MAX )」のように引数を指定し、引数として渡された値から、最も小さい値を結果として使用します。引数には数式、固定値、ネストされた min()max() などを渡すことができます。

例として、ある要素の width を「基本的には50vwに設定したいけど、1200pxより大きくはしたくない」という場合は、以下のような書き方ができます。

// 幅50vw, 最大幅1200px
.box {
	 width: 50vw;
	 max-width: 1200px;
}

	↓

.box {
	/* 推奨値50vw、最大値1200px */
  width: min(50vw, 1200px);
}

上記のように、 max-width を使わずに、 min() を使えば1行で書くことができます。

max() の使い方

max()最小値を取ることができる関数です。

max(VAL, MIN)」のように引数に2つの値を渡すことができ、引数として渡されている値から、最も大きい値を結果として使用します。

例として、ある要素の width を「基本的には50vwに設定したいけど、400pxより小さくはしたくない」という場合は、以下の書き方ができます。

// 幅50vw, 最小幅400px
.box {
	 width: 50vw;
	 min-width: 400px;
}

 ↓

.box {
	/* 最小値400px、推奨値50vw */
	width: max(50vw, 400px);
}

min()max() は、基本の書き方は同じですが、min()最大値max()最小値 を取ることができるということを覚えておきましょう。

また、例では幅に対して指定する方法を紹介しましたが、フォントサイズ や余白などのプロパティにも適用できます。

clamp() の使い方

clamp() は最大値と最小値の両方を取ることができます。

clamp( MIN, VAL, MAX )」という関数を使って、最小値・推奨値・最大値の3つの引数を指定し、値を上限と下限の間に制限することができます。

例えば、font-size を「基本的には2.86vwで設定したいけれど、最大で4.0rem、最小で1.0remにしたい」という場合は、以下の書き方ができます。

.box {
	/* 最小値1.0rem、推奨値2.86vw、最大値4.0rem */
	font-size: clamp(1.0rem, 2.86vw, 4.0rem);
}

上記の場合は、推奨値の2.86vwの計算値が、1.0remの値よりも大きくなるまで、font-size に1.0remが設定されます。また、推奨値の2.86vwの計算値が、2.86vwの4.0remの値よりも大きくなるまで、font-size には2.86vwが設定されます。

また、clamp()min()max()を合わせた書き方もできます。

/* clamp */
.box {
  width: clamp(400px, 50vw, 600px);
}

/* min()、max()を合わせた書き方 */
.box {
  width: min(600px, max(50vw, 400px));
}

最後に

3つの関数を使えるようになれば、これまで複数行書いていたコードが1行で済み、より見やすくスマートなコードが記述できます。

是非、普段のコーディングに取り入れてみてください!

合わせて読みたい!