このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。

View in English Always switch to English

max()

Baseline 広く利用可能

この機能は広く実装されており、多くのバージョンの端末やブラウザーで動作します。2020年7月以降、すべてのブラウザーで利用可能です。

max()CSS関数で、 CSS プロパティの値としてカンマで区切られた式のリストから最大の (最も正である) 値を設定できます。 max() 関数は <length><frequency><angle><time><percentage><number><integer> が使用できるところならばどこでも使用することができます。

試してみましょう

width: max(20vw, 400px);
width: max(20vw, 100px);
width: max(5vw, 100px);
<section class="default-example" id="default-example">
  <div class="transition-all" id="example-element">
    <img
      alt="Firefox logo"
      class="logo"
      src="/shared-assets/images/examples/firefox-logo.svg" />
  </div>
</section>

上記の最初の例では、幅は少なくとも 400px になりますが、ビューポートの幅が 2000px を超える場合はそれより広くなります(この場合、1vw は 20px なので、20vw は 400px になります)。この方法では、プロパティの固定最小値を指定するために絶対単位を使用し、より大きなビューポートに合わせて値を伸長できるように相対単位を使用しています。

構文

css
max(1, 2, 3)
max(1px, 2px, 3px)

引数

max() 関数は、引数としてカンマで区切った 1 つ以上の式を取り、もっとも大きい (最も正である) 式の値をプロパティに割り当てられた値として使用します。

式は、 (算術演算子を用いた) 数式、リテラル値、あるいは、有効な引数の型 (<length> など) に評価される attr() などの式や、ネストされた min()max() 関数を用いることができます。

式の各値に異なる単位を使用することができます。必要に応じて、計算順序を決めるために括弧を使用することもできます。

メモ

  • 表の列、列グループ、行、行グループ、セルの幅と高さのパーセント値を含む数式は、自動レイアウト表と固定レイアウト表のどちらでも、あたかも auto が指定されていたかのように扱われる可能性があります。
  • min() や他の max() 関数を式の値として入れ子にすることが認められています。式は完全な数式なので、 calc() 関数自体を使わずに直接加算、減算、乗算、除算を使うことができます。
  • 式は、標準的な演算子の優先順位規則を使用して、加算 ( + )、減算 ( - )、乗算 ( * )、除算 ( / ) の各演算子を組み合わせた値にすることができます。オペランドの + と - の両側には必ず空白を入れてください。式の中のオペランドは、任意の <length> 構文値を使用できます。
  • min()max() の値を組み合わせたり、 max()clamp()calc() 関数の中で使用したりすることができます (そしてよく必要になります)。

形式文法

<max()> = 
max( <calc-sum># )

<calc-sum> =
<calc-product> [ [ '+' | '-' ] <calc-product> ]*

<calc-product> =
<calc-value> [ [ '*' | / ] <calc-value> ]*

<calc-value> =
<number> |
<dimension> |
<percentage> |
<calc-keyword> |
( <calc-sum> )

<calc-keyword> =
e |
pi |
infinity |
-infinity |
NaN

アクセシビリティ

max() を使用してテキストのサイズを制御する場合は、テキストが常に十分に読める大きさであることを確認してください。提案としては、 min() 関数を max() の中で入れ子にして使用し、その二番目の値として常に十分な大きさの相対的な長さの単位を持つようにします。

css
small {
  font-size: max(min(0.5vw, 0.5em), 1rem);
}

これにより、ページが拡大縮小されたときにテキストの大きさが拡大縮小され、最小サイズは 1rem になります。

フォントに最小値を設定する

max() 関数の用途は、フォントサイズを最小サイズ以上に伸長できるようにして、読みやすさを確保しながらレスポンシブなフォントサイズを実現することです。

少し CSS を見てみましょう。

css
h1 {
  font-size: 2rem;
}
h1.responsive {
  font-size: max(4vw, 2em, 2rem);
}

フォントサイズは、最小で 2rem、またはページのフォントの既定サイズの 2 倍になります。これにより、読みやすく、アクセスしやすい状態が確実に保持されます。

html
<h1>このテキストは常に読みやすいですが、サイズは変わりません。</h1>
<h1 class="responsive">
  このテキストは、常に読みやすく、ある意味でレスポンシブです。
</h1>

max() 関数はプロパティに許される最小値を探るものと考えてください。

仕様書

仕様書
CSS Values and Units Module Level 4
# calc-notation

ブラウザーの互換性

関連情報