Как задать размер шрифта в CSS
Свойство font-size задает размер текста. Задайте его любому элементу, и весь текст внутри унаследует размер, если дочерний элемент не задаст свой.
Чтобы изменить размер шрифта в HTML, все равно используется CSS. Добавьте атрибут style (<p style="font-size: 20px;">) или правило в таблицу стилей. Тегу <font size="5"> из 1990-х не место на современной странице.
Какие единицы принимает font-size
| Значение | Пример | От чего считается |
|---|---|---|
px | 16px | Ни от чего: фиксированный размер |
rem | 1.25rem | Размер шрифта корневого элемента <html> (по умолчанию 16px) |
em | 1.2em | Размер шрифта родителя |
% | 120% | Размер шрифта родителя, как em (120% это 1.2em) |
| Ключевое слово | large | Готовая шкала вокруг medium по умолчанию |
| Относительное ключевое слово | smaller, larger | На шаг от размера родителя |
| Viewport | 4vw | Ширина окна просмотра (4% от нее) |
| Функция | clamp(1rem, 4vw, 2rem) | Плавно между минимумом и максимумом |
Введите значение и посмотрите, какой размер вычислит браузер:
Попробуйте 20px, 2em, 150%, x-large, smaller и 5vw. Невалидное значение, например big, игнорируется, и текст сохраняет последний валидный размер.
rem и em: разница, которая кусается
rem всегда смотрит на корневой элемент, поэтому 1.2rem одинаков, где бы он ни стоял. em смотрит на родителя, поэтому при вложении размеры перемножаются:
Самый внутренний блок с em равен 16 × 1.2 × 1.2 × 1.2 = 27.648px. Самый внутренний блок с rem по-прежнему 19.2px. Такое перемножение полезно для компонента, части которого должны масштабироваться вместе, а во всех остальных случаях становится сюрпризом. Все единицы длины сравниваются на странице про единицы.
Ключевые слова: от xx-small до xx-large
Абсолютные ключевые слова соответствуют фиксированной шкале вокруг medium, который равен размеру пользователя по умолчанию (16px, если его не меняли):
При стандартных 16px small это 13px, large 18px, x-large 24px, а xx-large 32px. Ключевые слова годятся для быстрой работы, но дизайн-системе обычно нужна своя шкала в rem.
Адаптивный размер шрифта через clamp()
Заголовок, который должен расти вместе с экраном, но не становиться слишком маленьким или слишком большим, это один вызов clamp(): минимум, предпочтительный размер, который масштабируется, и максимум.
В превью шириной 800px 5vw равно 40px, это между 24px и 48px, поэтому побеждает оно. Адаптивная типографика подробно разобрана на странице про clamp.
Базовый размер для всей страницы
Задайте размер один раз на body (или html) и остальные размеры задавайте относительно него:
html { font-size: 100%; } /* respects the user's setting, usually 16px */
body { font-size: 1rem; }
h1 { font-size: 2.25rem; }
small, .caption { font-size: 0.875rem; }
Избегайте трюков вроде html { font-size: 62.5%; }, если только все размеры на странице затем не заданы в rem, и никогда не задавайте фиксированный размер в px на html: он перебивает размер шрифта, выбранный читателем в браузере, а некоторые люди без этой настройки вообще не могут читать.
Замечания о доступности
- Основной текст от 16px и больше это хороший минимум для чтения с экрана.
- Размеры в
remиemследуют за настройкой шрифта пользователя по умолчанию. Размеры вpxследуют за масштабом страницы, но не за этой настройкой. - На iPhone Safari увеличивает страницу при фокусе на поле ввода с размером шрифта меньше 16px. Задайте полям форм
font-size: 1remили больше, чтобы этого избежать.
Частые ошибки
- Тег
<font>. Он устарел. Используйте свойствоfont-size. - Вложенные размеры в
em, которые неуправляемо растут или уменьшаются. Используйтеrem, если перемножение вам не нужно. - Фиксированный размер в
pxнаhtml. Он перебивает собственную настройку шрифта читателя. - Забыли, что у заголовков уже есть размер.
<h1>по умолчанию2em, поэтому нуженh1 { font-size: 1em; }, если хотите размер основного текста. - Только единицы viewport.
font-size: 3vwстановится нечитаемым на телефоне и огромным на широком мониторе. Оберните его вclamp().
Часто задаваемые вопросы
Как изменить размер шрифта в CSS?
Задайте элементу свойство font-size: p { font-size: 18px; }. Оно принимает длины (px, rem, em), проценты и ключевые слова вроде large.
Как изменить размер шрифта в HTML?
Через CSS, в таблице стилей или в атрибуте style: <p style="font-size: 20px;">. Старый тег <font size="5"> в HTML5 устарел, использовать его не стоит.
Какой размер шрифта в браузерах по умолчанию?
16px для основного текста, если пользователь не изменил его в настройках браузера. Именно этому значению по умолчанию равны 1rem и ключевое слово medium.
Что использовать для размера шрифта: px, em или rem?
Для большей части текста rem: он масштабируется вместе с настройкой шрифта в браузере пользователя и не перемножается. em, когда размер должен следовать за родителем, например у иконки внутри кнопки. px не следует за размером шрифта, который читатель задал в браузере, поэтому для основного текста его лучше избегать.
Почему размер шрифта в em все время растет?
Потому что em считается от размера шрифта родителя, и у вложенных элементов значения перемножаются: 1.2em внутри 1.2em дает 1.44 от базового. Перейдите на rem, который всегда считается от корневого элемента.