Pick the biggest value from several size options so text and blocks never shrink below a comfortable minimum.
複数のサイズ候補の中から“いちばん大きい値”を自動で選ばせて、文字やブロックが小さくなりすぎない“下限”をかんたんに守らせる道具。
max()
は「候補をいくつか見せて、いちばん大きい値を採用してね」とブラウザに頼むための道具です。
画面が小さくても文字が小さくなりすぎないようにしたり、カードの幅を“最低これだけは確保”したいときに使います。
max(<length | number | percentage>, <length | number | percentage>, …)
渡した複数の値のうち、評価結果が最大のものを選びます。
互換のある型同士(例:px
と rem
、%
と vw
など)が比較対象になります。
max(16px, 2vw, 1.2rem)
のようにOK。calc()
・min()
・clamp()
と組み合わせても構いません。
CSS
/* ビューポートが小さくても 16px 未満にしない */
.bodyText {
font-size: max(16px, 2vw);
}
CSS
/* 親の 50% を目安にしつつ、300px は必ず確保 */
.card {
width: max(300px, 50%);
}
CSS
/* 画面に応じて増やすが、最低 1rem は確保 */
.section {
padding: max(1rem, 2vh);
}
%
は親やコンテナのサイズを基準に解決されます。親のサイズが決まっていないと期待とズレることがあります。max()
min()
clamp(最小, 望み, 最大)
max(a, b)
min(a, b)
clamp(min, preferred, max)
CSS
/* 16px 未満にせず、40px を超えない */
.title {
font-size: clamp(16px, 4vw, 40px);
}
CSS
.grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(max(12rem, 25%), 1fr));
gap: 1rem;
}
各カードが 12rem 以上で、可能なら広がるイメージ