• HOME > 
  • CSS > 
  • CSSのclamp()・max()・min()の使い方【プロ...

CSSのclamp()・max()・min()の使い方【プロパティで使える便利な比較関数】

投稿日:

このページにはGoogleアドセンス広告とアフィリエイト広告が含まれています。

カテゴリー記事のアイキャッチ画像

本記事は執筆時点(2023年01月16日)の情報をベースにしております。掲載している情報が最新ではない可能性がありますので何卒ご容赦ください。

広告
広告

clamp()・max()・min()とは?

clamp()・max()・min()はCSSのプロパティの値の指定に利用できる比較関数です。

これらの関数を用いると、複数の値を比較し1つの値を導きだしてくれます。つまり、プロパティ内で上限や下限を設定できるので、これまでレスポンシブ対応の為にメディアクエリなどを駆使して行っていた記述をひとまとめに軽減することが可能になります。

calc関数との違いは?

同じように値の部分で利用できる関数として、「calc」というものも存在します。

こちらは、clamp()・max()・min()のような比較ではなく、計算を行うための関数になります。

calcを用いるとCSS内で計算を行って、導き出された数値を値として指定することができるのでこちらも大変便利です。

主に横並びの要素の幅をレスポンシブ対応させたいときの指定に利用されます。

リンク先のサムネイル
CSSのcalc関数の使い方

calcを使えばCSS内で計算を行い、その計算から導き出された計算結果をプロパティの値に使用することができます。calcでは、演算子を使った四則演算(足し算、引き算、掛け算、割り算)が可能で...【もっと読む】

clamp()・max()・min()の対応ブラウザは?

clamp()・max()・min()は現時点で、Chrome、safari、Edge、Firefoxという主要ブラウザでサポートされています。

ほとんどのモダンブラウザで対応していますので安心して利用できます。

IEは非対応なので注意!

ただし、clamp()・max()・min()はインターネットエクスプローラーには対応していないので注意が必要です。とはいえ、IEそのものが現在ではサポートが終了していますのでこれらの関数は積極的に活用して問題はないと言えそうです。

min()の使い方

min()関数はコンマ区切りで並べた複数の値を比較し、その中から最小の値を返してくれます。

言い換えると、「最大値を指定したい時はmin()を使用する」ということになります。

min()の記述の仕方

min()関数は次のように書きます。

minの書き方

次の例を見ながら、min関数によってどのように値が決まるかを説明していきます。

HTML

<div class="sample">サンプル</div>

CSS

.sample{
    -省略-
    width:min(100%,600px);/*min()関数*/
}

min関数は値を比較して最小の値を導きだしてくれるので、この例では「100%」と「600px」を比べて小さい方がこの要素の横幅に設定されます。

この場合の「100%」とはウィンドウの横幅になりますので、状況によってpxに換算する数値が異なります。

仮に下図のようにウィンドウ幅が「800px」だった場合、「100%(=800px)」と「600px」を比較しますので、より小さい「600px」が要素の横幅として適用されます。これが最大値となります。

minの使用例

仮に下図のようにウィンドウ幅が「500px」だった場合、「100%(=500px)」と「600px」を比較しますので、より小さい「100%(=500px)」が適用され、要素の幅は「100%(=500px)」となります。

minの使用例

このようにして、min()関数を用いれば要素の最大値を設定することができます。

従来であれば「widthとmax-width」を用いて設定していたものになりますが、min()関数を使えば一行にまとめることが可能になります。

max()の使い方

max()関数はコンマ区切りで並べた複数の値を比較し、その中から最大の値を返してくれます。

言い換えると、「最小値を指定したい時はmax()を使用する」ということになります。

max()の記述の仕方

max()関数は次のように書きます。

maxの書き方

次の例を見ながら、max関数によってどのように値が決まるかを説明していきます。

HTML

<div class="sample">サンプル</div>

CSS

.sample{
    -省略-
    width:max(100%,600px);/*max()関数*/
}

max関数は値を比較して最大の値を導きだしてくれるので、この例では「100%」と「600px」を比べて大きい方がこの要素の横幅に設定されます。

この場合も「100%」とはウィンドウの横幅になりますので、状況によってpxに換算する数値が異なります。

仮に下図のようにウィンドウ幅が「500px」だった場合、「100%(=500px)」と「600px」を比較しますので、より大きい「600px」が要素の横幅として適用されます。これが最小値になります。

maxの使用例

仮に下図のようにウィンドウ幅が「800px」だった場合、「100%(=800px)」と「600px」を比較しますので、より大きい「100%(=800px)」が適用され、要素の幅は「100%(=800px)」となります。

maxの使用例

このようにして、max()関数を用いれば要素の最小値を設定することができます。

従来であれば「widthとmin-width」を用いて設定していたものになりますが、max()関数を使えば一行にまとめることが可能になります。

clamp()の使い方

clamp()関数は、最小値と最大値に加えて推奨値と呼ばれる値を設定します。

推奨値に相対的な数値を指定しておくことで、最小値を下回った時は最小値が適用され、最大値を超えたときは最大値が適用、その範囲の間であれば推奨値が適用されるようにできます。

clamp()関数の記述の仕方

clamp()関数は次のように記述します。

clampの書き方

次の例を見ながら、clamp関数によってどのように値が決まるかを説明していきます。

HTML

<div class="sample">サンプル</div>

CSS

.sample{
    -省略-
    width:clamp(600px,100%,800px);/*clamp()関数*/
}

ここでは、最小値に600px、推奨値に100%、最大値に800pxを指定しました。

要素は最小値である600pxを下回ることはありません。

clampの最小値

600pxを超えたら推奨値である100%が適用され続けるので、要素の幅=ウィンドウの幅になります。

clampの推奨値

そして要素は最大値である800pxを上回ることはありません。

clampの最大値

このようにclamp関数を用いると上限と下限の間でフレキシブルに値を指定することができます。

clamp()・max()・min()で演算子を使って計算する

clamp()・max()・min()の中では、calc関数と同様に演算子を用いて計算処理を行わせることもできます。

加算には「+」、減算は「-」、乗算には「*」、除算には「/」を使用します。

CSS

.sample{
    -省略-
    width:clamp(600px,100% - 10px,800px);/*clamp()関数*/
}

このように計算式を組み込むことで、推奨値には常に100%から10pxを差し引いた値が設定されます。

clamp()・max()・min()の活用方法

これらの関数の最大の特徴は、幅の指定以外にも使えるという点です。

幅や高さの上限や下限はmax-widthやmin-heightプロパティが存在しましたが、font-sizeやmarginなどでは最大値や最小値を設定することができませんでした。

clamp()・max()・min()をうまく応用してそれらのプロパティの値に上限や下限を設ければ、よりレスポンシブなサイトを作ることができるはずです。

safariでclamp()が効かないときは?

主要ブラウザでサポートされているはずのclampですが、なぜかsafariで正しく動作しないことがあるようです。

そのような場合はmin-heightに0vwを指定すれば解決するようなので試してみて下さい。

CSS

*{
    min-height:0vw/*clamp()がsafariで使えない時用*/
}

まとめ

以上がclamp()・max()・min()の使い方です。

メディアクエリ一辺倒でレスポンシブ対応を行うよりも、こうした関数を活用して簡潔に書いた方が効率的なだけでなく、修正もしやすいうえ、コードも見やすくなるのでミスも軽減されるはずです。

広告
広告

関連する記事

サムネイル

CSSでPNG画像に影を落とす方法【filterプロパティd……

2025年01月15日
CSSでドロップシャドウをつけるには? CSSで要素に影(ドロップシャドウ)を付ける手段としては「box-shadow」や「text-shadow(テキストの場 […]
サムネイル

CSSのfilterプロパティの関数の種類と効果をまとめ【フ……

2025年01月06日
最終更新日:2025年01月15日
IEのサポートが終了したので、これまで使う機会の少なかったfilterプロパティを改めて調べたところ、CSSでの表現の幅を広げてくれる画期的なプロパティだと気づ […]
サムネイル

CSSで写真にぼかし加工を加える方法【filterプロパティ……

2025年01月06日
CSSだけで写真をぼかせる? CSSのfilterプロパティのblur()関数を使うと、画像(要素)にぼかしを加えることができます。 画像編集ソフトを使うことな […]
サムネイル

CSSで写真の明るさ(明度)を調整する方法【filterプロ……

2025年01月06日
CSSだけで画像の明度を調整できる? CSSのfilterプロパティのbrightness()関数を使うと、画像(要素)の明るさを変更することができます。 画像 […]
サムネイル

CSSで写真のコントラストを変更する方法【filterプロパ……

2025年01月06日
CSSだけで写真のコントラストを調整できる? CSSのfilterプロパティのcontrast()関数を使うと、画像(要素)のコントラストを変更することができま […]
サムネイル

CSSで写真を白黒に変更する方法【filterプロパティgr……

2025年01月06日
CSSだけで写真を白黒にできる? CSSのfilterプロパティのgrayscale()関数を使うと、画像(要素)を白黒に変更することができます。 グレースケー […]
サムネイル

CSSで写真をセピアに加工する方法【filterプロパティs……

2025年01月06日
CSSで写真をセピアに加工できる? CSSのfilterプロパティのsepia()関数を使うと、画像をセピア色に変換できます。 画像編集ソフトを使うことなくCS […]