max()
Baseline
Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since 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 になる場合) はより広くなります。 max()
の値はプロパティが取りうる最小の値を提供するものとして考えてください。
構文
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
例
>フォントに最小値を設定する
CSS 関数のもう一つの使用例は、少なくとも最小サイズを確保しながらフォントサイズを拡大していくことで、読みやすさを確保しながらレスポンシブなフォントサイズを可能にします。
多少の CSS を見てみましょう。
h1 {
font-size: 2rem;
}
h1.responsive {
font-size: max(4vw, 2em, 2rem);
}
フォントサイズは最小で 2rem、ページの既定のフォントサイズの 2 倍になります。これは、それが読みやすく、アクセシビリティを確保することを保証します。
<h1>このテキストは常に読みやすいですが、サイズは変わりません。</h1>
<h1 class="responsive">
このテキストは、常に読みやすく、ある意味でレスポンシブです。
</h1>
max()
関数はプロパティに許される最小値を探るものと考えてください。
アクセシビリティの考慮
max()
を使用してテキストのサイズを制御する場合は、テキストが常に十分に読める大きさであることを確認してください。提案としては、 min()
関数を max()
の中で入れ子にして使用し、その二番目の値として常に十分な大きさの相対的な長さの単位を持つようにします。
small {
font-size: max(min(0.5vw, 0.5em), 1rem);
}
これにより、ページが拡大縮小されたときにテキストの大きさが拡大縮小され、最小サイズは 1rem になります。
仕様書
Specification |
---|
CSS Values and Units Module Level 4> # calc-notation> |
ブラウザーの互換性
Loading…