CSS-справочникВ стандарте

CSS clamp() — как работает

CSS clamp(): принцип работы, корректный синтаксис, практический сценарий, ограничения, ошибки и актуальная совместимость.

Практический смысл

Для «clamp()» важно отделить назначение от случайного оформления. Функция clamp() вычисляет CSS-значение из переданных аргументов. При проверке в учебном примере без внешнего фреймворка сначала зафиксируйте изменение DOM в панели Elements для «clamp()», затем проверяйте отсутствие данных как отдельный сценарий.

Практическое правило для clamp()

Проверяя «clamp()», соблюдайте правило: проверяйте единицы, диапазоны аргументов и запасное значение. Для «clamp()» изменяйте одно условие за запуск и фиксируйте фактический результат.

Синтаксис clamp()

Пример «clamp()» оставляет только контекст, необходимый для области «CSS-функции». Измените одно значение и проследите результат в браузере.

css
.demo {
  width: clamp(16rem, 50vw, 60rem);
}
Открыть в Playground

Как работает clamp()

Механика «clamp()» начинается с допустимого контекста и заканчивается наблюдаемым результатом. Возвращает значение, тип которого должен подходить выбранному свойству; для «clamp()» отдельно проверьте изменение DOM в панели Elements.

Проверка в проекте

  • Проверяйте единицы, диапазоны аргументов и запасное значение; результат относится непосредственно к «clamp()».
  • Проверить вычисленное значение в DevTools и источник победившего правила при разборе «clamp()».
  • Проверьте «clamp()» в учебном примере без внешнего фреймворка через изменение DOM в панели Elements и запишите наблюдаемое изменение.
Выбор конструкции

Выбор «clamp()» оправдан, если задача относится к области «CSS-функции», а риск «результат clamp() должен соответствовать типу значения свойства, где используется функция» исключён проверкой. Для «clamp()» сравнивайте не внешний вид, а результат для пользователя.

Практика с clamp()

Проверьте «clamp()» в тестовом шаблоне с длинным текстом, клавиатурным управлением и узким экраном. Отдельная проверка для «clamp()»: проверяйте единицы, диапазоны аргументов и запасное значение.

CSS-функцииclamp()

Сценарий: в учебном примере без внешнего фреймворка.

Ошибки при работе с clamp()

01

Доступность

Результат clamp() должен соответствовать типу значения свойства, где используется функция — это предметный риск для «clamp()».

02

Каскад

Отсутствие запасного поведения при неподдерживаемой возможности при использовании «clamp()».

03

Поддержка

Фиксированные размеры, которые перестают вмещать реальное содержимое; для «clamp()» проверьте это отдельно.

Поддержка clamp()

Для «clamp()» таблица собрана из закреплённой версии MDN Browser Compatibility Data. Указанная версия браузера показывает первое заявленное появление базовой поддержки «clamp()»; окончательное решение принимайте по аудитории конкретного проекта.

Chromeс версии 79Edgeс версии 79Firefoxс версии 75Safariс версии 13.1

Спецификация: источник 1.

Вопросы о clamp()

Как понять, что «clamp()» выбрано правильно?

«clamp()» выбрано правильно, когда оно решает задачу «вычислить значение из аргументов внутри CSS-декларации», сохраняет результат в учебном примере без внешнего фреймворка и проходит предметную проверку: проверяйте единицы, диапазоны аргументов и запасное значение.

Нужен ли запасной вариант для «clamp()»?

Запасной вариант для «clamp()» нужен, если целевой браузер или режим не обеспечивает выбранное поведение. Без улучшения «clamp()» должно сохранять смысл, содержимое и основное действие.

Спецификации и источники

Синтаксис и статус проверяются по HTML Living Standard, спецификациям CSS и MDN Browser Compatibility Data. Примеры и объяснения подготовлены для этого сервиса.