Функции min()
, max()
и clamp()
в CSS используются для управления размерами элементов с учетом различных условий, таких как размер экрана, родительского контейнера или другие динамические параметры.
1️⃣ Функция min()
Возвращает наименьшее значение из списка.
📌 Пример 1: Ограничение ширины элемента
css
.box { width: min(80vw, 500px); background: lightblue; }
🔹 Что делает?
- Берет меньшее значение между
80vw
(80% ширины экрана) и500px
. - Если экран маленький,
80vw
будет меньше 500px, поэтомуwidth
будет80vw
. - Если экран большой,
500px
окажется меньше80vw
, и ширина ограничится 500px.
2️⃣ Функция max()
Возвращает наибольшее значение из списка.
📌 Пример 2: Минимальный размер шрифта
css
.text { font-size: max(16px, 2vw); }
🔹 Что делает?
- Берет большее значение между
16px
и2vw
. - Если
2vw
больше16px
, то используется2vw
. - Если
2vw
меньше16px
, то текст никогда не станет меньше16px
.
3️⃣ Функция clamp()
Определяет значение в заданных пределах:
clamp(минимум, предпочтительное, максимум)
📌 Пример 3: Адаптивный размер заголовка
css
h1 { font-size: clamp(20px, 5vw, 50px); }
🔹 Что делает?
- Минимальный размер шрифта —
20px
. - Предпочтительный размер —
5vw
(5% ширины экрана). - Максимальный размер —
50px
. - Т.е. шрифт будет адаптироваться, но не выходить за границы
20px
и50px
.
🎨 Пример с min()
, max()
, clamp()
вместе
css
.box { width: min(90vw, 600px); height: max(200px, 50vh); font-size: clamp(14px, 2vw, 24px); background: coral; }
🔹 Что происходит?
✅ width
: не больше 600px
, но не шире 90vw
.
✅ height
: минимум 200px
, но не меньше 50vh
.
✅ font-size
: не меньше 14px
, не больше 24px
, но в пределах 2vw
.
🔥 Когда использовать?
min()
→ Когда нужно ограничить максимальный размер (например, ширину контейнера).max()
→ Когда нужно гарантировать минимальный размер (например, кнопки).clamp()
→ Когда нужен адаптивный диапазон значений (например, текст).
Теперь можно делать гибкую вёрстку без @media
! 🚀🔥
На самом деле, возможно управлять количеством колонок в CSS Grid без
@media
, используя min()
, max()
и clamp()
. Достаточно использовать функцию repeat(auto-fit, minmax(...))
.