clamp()
Baseline
Widely available
This feature is well established and works across many devices and browser versions. Itâs been available across browsers since иÑÐ»Ñ 2020 г..
CSS-ÑÑнкÑÐ¸Ñ clamp() задаÑÑ Ð·Ð½Ð°Ñение в диапазоне Ð¼ÐµÐ¶Ð´Ñ ÑказаннÑми нижней и веÑÑ
ней гÑаниÑами. ФÑнкÑÐ¸Ñ Ð¿ÑÐ¸Ð½Ð¸Ð¼Ð°ÐµÑ ÑÑи аÑгÑменÑа: минималÑное знаÑение, пÑедпоÑиÑаемое знаÑение и макÑималÑно допÑÑÑимое. ÐÐ¾Ð¶ÐµÑ Ð¸ÑполÑзоваÑÑÑÑ Ð²ÐµÐ·Ð´Ðµ, где допÑÑкаеÑÑÑ Ð¿Ñименение <length>, <frequency>, <angle>, <time>, <percentage>, <number>, или <integer>.
clamp(MIN, VAL, MAX) вÑÑиÑлÑеÑÑÑ ÐºÐ°Ðº max(MIN, min(VAL, MAX))
/* ÑвойÑÑво: clamp(expression{3}) */
width: clamp(10px, 4em, 80px);
РпÑимеÑе вÑÑе ÑиÑина бÑÐ´ÐµÑ Ð½Ðµ менÑÑе 10px и не болÑÑе 80px. Ðо еÑли ÑÐ°Ð·Ð¼ÐµÑ Ð¾Ð´Ð½Ð¾Ð³Ð¾ "em" бÑÐ´ÐµÑ Ð½Ð°Ñ Ð¾Ð´Ð¸ÑÑÑÑ Ð² диапазоне Ð¾Ñ 2.5px до 20px (в ÑÑмме Ð¾Ñ 10px до 80px), Ñо ÑиÑина бÑÐ´ÐµÑ ÑавнÑÑÑÑÑ ÑÑим 4em.
ÐавайÑе пÑедположим, ÑÑо в пÑимеÑе вÑÑе 1em Ñавен 16px:
width: clamp(10px, 4em, 80px);
/* еÑли 1em = 16px, 4em = (16px * 4) = 64px */
width: clamp(10px, 64px, 80px);
/* clamp(MIN, VAL, MAX) вÑÑиÑлÑеÑÑÑ ÐºÐ°Ðº max(MIN, min(VAL, MAX))) */
width: max(10px, min(64px, 80px))
width: max(10px, 64px);
width: 64px;
СинÑакÑиÑ
ФÑнкÑÐ¸Ñ clamp() пÑÐ¸Ð½Ð¸Ð¼Ð°ÐµÑ Ð² каÑеÑÑве аÑгÑменÑов ÑÑи ÑазделÑннÑÑ
запÑÑой вÑÑажениÑ, ÑказÑваемÑÑ
в поÑÑдке: минималÑное знаÑение, пÑедпоÑиÑаемое знаÑение, макÑималÑное знаÑение.
ÐинималÑное знаÑение â наименÑÑее знаÑение, ÑвлÑÑÑееÑÑ Ð½Ð¸Ð¶Ð½ÐµÐ¹ гÑаниÑей диапазона допÑÑÑимÑÑ Ð·Ð½Ð°Ñений. ÐÑли "пÑедпоÑиÑаемое" знаÑение менÑÑе "минималÑного", бÑÐ´ÐµÑ Ð¸ÑполÑзоваÑÑÑÑ Ð¸Ð¼ÐµÐ½Ð½Ð¾ "минималÑное".
ÐÑедпоÑиÑаемое знаÑение â ÑÑо вÑÑажение, Ñей ÑезÑлÑÑÐ°Ñ Ð±ÑÐ´ÐµÑ Ð¸ÑполÑзоваÑÑ Ð´Ð¾ ÑÐµÑ Ð¿Ð¾Ñ, пока бÑÐ´ÐµÑ Ð¾ÑÑаваÑÑÑÑ Ð² пÑÐµÐ´ÐµÐ»Ð°Ñ Ð´Ð¾Ð¿ÑÑÑимого диапазона знаÑений.
ÐакÑималÑное знаÑение â наиболÑÑее знаÑение, коÑоÑое бÑÐ´ÐµÑ ÑÑÑанавливаÑÑÑÑ, еÑли пÑедпоÑиÑаемое бÑÐ´ÐµÑ Ð¿ÑевÑÑаÑÑ Ð²ÐµÑÑ Ð½ÑÑ Ð³ÑаниÑÑ Ð´Ð¾Ð¿ÑÑÑимого диапазона.
ÐеÑедаваемÑе знаÑÐµÐ½Ð¸Ñ Ð¼Ð¾Ð³ÑÑ Ð±ÑÑÑ Ð¼Ð°ÑемаÑиÑеÑкими ÑÑнкÑиÑми (более подÑобно ÑмоÑÑиÑе на calc()), ÑоÑнÑми знаÑениÑми, или дÑÑгими вÑÑажениÑми, Ñакими как attr(), ÑезÑлÑÑаÑом коÑоÑÑÑ
ÑвлÑеÑÑÑ Ð´Ð¾Ð¿ÑÑÑимÑй Ñип аÑгÑменÑа (как напÑÐ¸Ð¼ÐµÑ <length>), или вложеннÑе min() и max() ÑÑнкÑии. ÐÐ»Ñ Ð¼Ð°ÑемаÑиÑеÑкиÑ
вÑÑажений можно иÑполÑзоваÑÑ Ñложение, вÑÑиÑание, Ñмножение и деление без иÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ ÑÑнкÑии calc(). Также, можно иÑполÑзоваÑÑ ÐºÑÑглÑе Ñкобки, ÑÑÐ¾Ð±Ñ Ð·Ð°Ð´Ð°ÑÑ Ð¿Ð¾ÑÑдок вÑÑиÑление.
Ðожно иÑполÑзоваÑÑ ÑазнÑе единиÑÑ Ð¸Ð·Ð¼ÐµÑÐµÐ½Ð¸Ñ Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ знаÑÐµÐ½Ð¸Ñ Ð² вÑÑажении и ÑазнÑе единиÑÑ Ð¸Ð·Ð¼ÐµÑÐµÐ½Ð¸Ñ Ð² лÑбой маÑемаÑиÑеÑкой ÑÑнкÑии, .ÑвлÑÑÑейÑÑ ÑаÑÑÑÑ Ð»Ñбого из аÑгÑменÑов.
ÐÑимеÑаниÑ
- ÐаÑемаÑиÑеÑкие вÑÑажениÑ, вклÑÑаÑÑие в ÑÐµÐ±Ñ Ð¿ÑоÑенÑÑ Ð´Ð»Ñ ÑиÑÐ¸Ð½Ñ Ð¸ вÑÑоÑÑ ÐºÐ¾Ð»Ð¾Ð½Ð¾Ðº ÑаблиÑÑ, гÑÑпп колонок ÑаблиÑÑ, ÑÑÑок ÑаблиÑÑ, гÑÑпп ÑÑÑок ÑаблиÑÑ Ð¸ ÑÑеек ÑаблиÑÑ Ð¸ пÑи знаÑении "auto" и пÑи знаÑении "fixed" ÑвойÑÑва "table-layout" могÑÑ Ð¾Ð±ÑабаÑÑваÑÑÑÑ ÐºÐ°Ðº еÑли Ð±Ñ Ð±Ñло задано знаÑение
auto. - ÐопÑÑкаеÑÑÑ Ð²ÐºÐ»Ð°Ð´ÑваÑÑ ÑÑнкÑии
max()иmin()в каÑеÑÑве знаÑений вÑÑажений, в ÑÑом ÑлÑÑае внÑÑÑенние обÑабаÑÑваÑÑÑÑ ÐºÐ°Ðº пÑоÑÑÑе Ñкобки. ÐÑÑÐ°Ð¶ÐµÐ½Ð¸Ñ ÑвлÑÑÑÑÑ Ð¿Ð¾Ð»Ð½Ð¾ÑÑÑÑ Ð¼Ð°ÑемаÑиÑеÑкими вÑÑажениÑми, поÑÑÐ¾Ð¼Ñ Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе иÑполÑзоваÑÑ ÑложениÑ, вÑÑиÑание, Ñмножение и деление без иÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ñамой ÑÑнкÑии calc(). - ÐÑÑажение Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð·Ð½Ð°ÑениÑми, обÑединÑÑÑими опеÑаÑоÑÑ ÑÐ»Ð¾Ð¶ÐµÐ½Ð¸Ñ (+), вÑÑиÑÐ°Ð½Ð¸Ñ (-), ÑÐ¼Ð½Ð¾Ð¶ÐµÐ½Ð¸Ñ (*) и Ð´ÐµÐ»ÐµÐ½Ð¸Ñ (/) Ñ Ð¸ÑполÑзованием ÑÑандаÑÑнÑÑ
пÑавил пÑиоÑиÑеÑа опеÑаÑоÑов. Ðе забÑдÑÑе поÑÑавиÑÑ Ð¿ÑÐ¾Ð±ÐµÐ»Ñ Ñ ÐºÐ°Ð¶Ð´Ð¾Ð¹ ÑÑоÑÐ¾Ð½Ñ Ð¾Ñ Ð¾Ð¿ÐµÑандов + и -. ÐпеÑÐ°Ð½Ð´Ñ Ð² вÑÑажении могÑÑ Ð¸Ð¼ÐµÑÑ Ð»Ñбое знаÑение ÑинÑакÑиÑа
<length>. ÐÑ Ð¼Ð¾Ð¶ÐµÑе иÑполÑзоваÑÑ ÑазнÑе единиÑÑ Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ знаÑÐµÐ½Ð¸Ñ Ð² ÑвоÑм вÑÑажении. ÐÑ Ñакже можеÑе иÑполÑзоваÑÑ ÐºÑÑглÑе Ñкобки, ÑÑÐ¾Ð±Ñ ÑÑÑановиÑÑ Ð¿Ð¾ÑÑдок вÑÑиÑлений, когда ÑÑо Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾. - ЧаÑÑо вам Ð¼Ð¾Ð¶ÐµÑ Ð¿Ð¾Ð½Ð°Ð´Ð¾Ð±Ð¸ÑÑÑÑ Ð¸ÑполÑзоваÑÑ
min()иmax()в ÑÑнкÑии clamp ().
Formal syntax
<clamp()> =
clamp( [ <calc-sum> | none ] , <calc-sum> , [ <calc-sum> | none ] )
<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
ÐÑимеÑÑ
>УÑÑановка минималÑного и макÑималÑного ÑазмеÑа ÑÑиÑÑа
clamp() позволÑÐµÑ Ð²Ð°Ð¼ ÑÑÑановиÑÑ ÑÐ°Ð·Ð¼ÐµÑ ÑÑиÑÑа, коÑоÑÑй изменÑеÑÑÑ Ð² завиÑимоÑÑи Ð¾Ñ ÑиÑÐ¸Ð½Ñ Ð¾Ð±Ð»Ð°ÑÑи видимоÑÑи, но не ÑменÑÑаеÑÑÑ Ð½Ð¸Ð¶Ðµ и не ÑвелиÑиваеÑÑÑ Ð²ÑÑе заданного ÑазмеÑа. Ðна Ð¸Ð¼ÐµÐµÑ ÑÐ¾Ñ Ð¶Ðµ ÑÑÑекÑ, ÑÑо и в Fluid Typography, но в Ð¾Ð´Ð½Ñ ÑÑÑÐ¾ÐºÑ Ð¸ без иÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¼ÐµÐ´Ð¸Ð°Ð²ÑÑажений.
p {
font-size: clamp(1rem, 2.5vw, 1.5rem);
}
<p>
If 2.5vw is less than 1rem, the font-size will be 1rem. If 2.5vw is greater
than 1.5rem, the font-size will be 1.5rem. Otherwise, it will be 2.5vw.
</p>
Accessibility concerns
TBD
СпеÑиÑикаÑии
| Specification |
|---|
| CSS Values and Units Module Level 4 > # funcdef-clamp > |