Как вы делаете в CSS max-font-size?

Как вы делаете в CSS max-font-size?

От автора: в CSS нет max-font-size, поэтому, если нам нужно что-то, что делает то же самое, мы должны прибегнуть к хитрости.

Зачем это вообще нужно? Ну, сам font-size может быть установлен динамически. Например, font-size: 10vw;. Это использует «единицы окна просмотра» для определения размера шрифта, который будет увеличиваться и уменьшаться в зависимости от размера окна браузера. Если бы мы имели max-font-size, мы могли бы ограничить, насколько большим становится шрифт (аналогично другому направлению с помощью min-font-size).

Одним из решений является использование медиа-запроса с определенной контрольной точкой размера экрана, которая устанавливает размер шрифта в не относительных единицах.

body { font-size: 3vw;
}
@media screen and (min-width: 1600px) { body { font-size: 30px; }
}

Существует концепция, получившая название CSS-блокировки, которая становится все более интересной, согласно ей мы медленно масштабируем значение между минимумом и максимумом. Это может быть так…

body { font-size: 16px;
}
@media screen and (min-width: 320px) { body { font-size: calc(16px + 6 * ((100vw - 320px) / 680)); }
}
@media screen and (min-width: 1000px) { body { font-size: 22px; }
}

В CSS есть функция max(), поэтому приведенный выше пример становится однострочным:

font-size: max(30vw, 30px);

Или добавьте минимальное значение:

font-size: min(max(16px, 4vw), 22px);

Что идентично:

font-size: clamp(16px, 4vw, 22px);

На момент написания статьи совместимость с браузерами довольно невысока, но в настоящее время в Chrome это работает. Ожидается, что данная функция будет реализована в остальных браузерах, но, если вам она нужна прямо сейчас, посмотрите на первый вариант выше.

Теперь, когда у нас есть эти функции, мне кажется маловероятным, что мы когда-либо получим в CSS min-font-size и max-font-size, так как эти они почти аналогичны.

Автор: Chris Coyier

Источник: https://css-tricks.com

Редакция: Команда webformyself.