関数clamp
関数 clamp は3つのパラメータを取ります:最小値、推奨値、最大値。
これは以下を返します:
- 推奨値が最小値より小さい場合は最小値
- 推奨値が最大値より大きい場合は最大値
- 推奨値が最小値と最大値の間にある場合は推奨値
構文
セレクタ {
プロパティ: clamp(min, pref, max);
}
例 . ブロックサイズの制限
次の例では、ブロックの推奨サイズは
画面幅の 30% になります。
ただし、 100px より小さく、 300px より大きく
なることはありません:
<div id="con1"></div>
<div id="targ"></div>
<div id="con2"></div>
#targ {
width: clamp(100px, 30%, 300px);
height: 100px;
border: 1px solid red;
margin: 30px auto;
}
#con1 {
width: 100px;
height: 100px;
border: 1px solid black;
margin: 30px auto;
}
#con2 {
width: 300px;
height: 100px;
border: 1px solid black;
margin: 30px auto;
}
:
例 . レスポンシブなフォントサイズ
次の例では、フォントの推奨サイズは
4vw になります。
ただし、 16px より小さく、 32px より大きく
なることはありません:
<p id="con1">
responsive text example
</p>
<p id="elem">
responsive text example
</p>
<p id="con2">
responsive text example
</p>
#elem {
font-size: clamp(16px, 4vw, 32px);
color: red;
}
#con1 {
font-size: 16px;
}
#con2 {
font-size: 32px;
}
:
例 . レスポンシブな角丸の半径
次の例では、角丸の推奨半径は
3vw になります。
ただし、 5px より小さく、 20px より大きく
なることはありません:
<div id="con1"></div>
<div id="elem"></div>
<div id="con2"></div>
div {
width: 100px;
height: 100px;
margin: 20px auto;
background: lightblue;
}
#elem {
border-radius: clamp(5px, 3vw, 20px);
background: #efafc6;
}
#con1 {
border-radius: 5px;
}
#con2 {
border-radius: 20px;
}
: