vasilenko.info

Генератор clamp() для флюидной типографики

/tool/clamp-generator/ работает считает браузер

Задайте размер на узком экране и на широком, укажите ширины, между которыми он растёт, — и получите строку clamp() вместо трёх медиазапросов. Можно взять сразу всю шкалу: кегли заголовков по модульному соотношению или набор отступов от 3xs до 3xl.

промоДвадцать лет заметок про сайтыКак это делали в 2008-м и что из этого работает сейчас.Открыть

Расчёт строки clamp()

Между двумя ширинами размер идёт по прямой; за ними — упирается в границы.

Что считаем

Одно значение — одна строка. Шкала кеглей — набор переменных --step--2 … --step-5 по модульному соотношению.

Пары кеглей из типового макета — нажмите и подставится
Ширина макета и размер на нём, через двоеточие; две пары через запятую. Заполнит все четыре поля разом. Три пары включат точку перегиба.
Нижняя граница: меньше этого не станет
Верхняя граница: больше этого не станет
Обычно самый узкий телефон, который вы поддерживаете
Обычно ширина вашего контейнера, а не монитора
Нужна, когда с телефона до планшета размер должен расти быстрее, чем дальше до десктопа. На выходе — min() или max() внутри clamp().
Арифметика от свойства не меняется — меняется только имя в готовой строке
Нужен только для перевода в rem
Единицы в готовой строке
Единица масштаба

Образец, число «сейчас» и отметка на графике идут за ползунком: тащить браузер за угол не нужно.

Сейчас в вашем окне

—px

Проверка доступности считается вместе со строкой.

Образец

Тем же значением набран этот образец

Что забрать
clamp.css готовый CSS
—

Считает браузер. Ни числа, ни готовые строки никуда не отправляются: файл собирается прямо на устройстве, а ссылка для обмена лежит в адресной строке.

График и таблица

По горизонтали — ширина от 320 до 2560 px, по вертикали — размер в пикселях. Полки слева и справа: там значение упёрлось в границу.

График строится по тем же числам, что и таблица.

Размер на контрольных ширинах
промоПосчитайте заодно ROIОкупаемость кампании по расходу и доходу.Открыть

Как пользоваться

  1. Возьмите два размера из макета: телефонный и десктопный. Кнопка «Разобрать» принимает их одной строкой вида 375:20, 1440:48 — четыре поля заполнятся сами.

  2. Ширины ставьте те, на которых макеты нарисованы. Нижнюю — самый узкий поддерживаемый экран, верхнюю — ширину контейнера, а не ширину монитора.

  3. Нужна вся типографика разом — переключитесь на «Шкалу кеглей»: базовый кегль, соотношение на узком и на широком экране, число шагов вверх и вниз. На выходе набор --step--2 … --step-5. «Шкала отступов» тем же способом даёт --space-3xs … --space-3xl и пары вроде --space-s-m.

  4. Оставьте единицы rem: слагаемое в rem обязательно. Строка из одного vw не отзывается на увеличение шрифта в настройках браузера — блок «доступность» показывает, во сколько раз вырастет текст при удвоении базового кегля и при zoom 200 %.

  5. Ползунок «Ширина для примерки» двигает всю картину: образец, число «сейчас» и отметку на графике. Кнопка рядом возвращает ширину настоящего окна.

  6. Вкладки под кодом дают одно и то же шестью способами: строка CSS, переменные в :root, SCSS, PostCSS с отдельными min и max, JSON-токены и кусок конфига Tailwind. Кнопка «Скачать файлом» сохраняет выбранную вкладку.

  7. Кнопка «Скопировать ссылку» кладёт всю конфигурацию в адрес — ссылку можно отправить в чат, и коллега увидит ту же шкалу.

промоСписок задач в браузереБез аккаунта, всё хранится на вашем устройстве.Открыть

Формула и что в неё входит

clamp(мин, наклон × 100 vw + сдвиг, макс), где наклон = (макс − мин) ÷ (ширина макс − ширина мин)

Средний аргумент clamp() — обычное значение, а не отдельный режим: браузер считает его на каждой ширине заново и обрезает границами. Медиазапросы для этого не нужны. Шкала считается тем же способом, просто строк на выходе не одна, а по числу шагов: у каждого шага свои мин и макс, а ширины общие.

Разбор примера: с 16 px на 32 px между 400 и 1200 px

Исходные данные — те же, что стоят в полях по умолчанию: их можно пересчитать в уме и убедиться, что инструмент не врёт.

  1. Наклон: (32 − 16) ÷ (1200 − 400) = 16 ÷ 800 = 0,02.

  2. Коэффициент vw: 0,02 × 100 = 2. То есть 2vw.

  3. Сдвиг: 16 − 0,02 × 400 = 16 − 8 = 8 px. В rem это 8 ÷ 16 = 0.5rem.

  4. Границы в rem: 16 ÷ 16 = 1rem и 32 ÷ 16 = 2rem.

  5. Проверка на 400 px: 0.5rem это 8 px, 2vw это 8 px, сумма 16 px. Проверка на 1200 px: 8 + 24 = 32 px.

  6. Доступность на 1280 px. Обычно там 8 + 25,6 = 33,6 px, потолок обрезает до 32. Читатель ставит базовый кегль 32 px вместо 16 — все rem удваиваются: 16 + 25,6 = 41,6 px при потолке 64. Было 32, стало 41,6 — это 130 %, а не 200 %, и WCAG 1.4.4 не выполнен. Инструмент показывает это число сразу: чтобы дотянуть до двойного, поднимают верхнюю границу или уменьшают долю vw.

font-size: clamp(1rem, 0.5rem + 2vw, 2rem);

Частые вопросы

промоВесь каталог инструментовСорок четыре штуки, все считают в браузере.Открыть

Смежные инструменты

5