Урок 05. Старый vs Новый: своя шкала против встроенной
⚡ Кратко
Раньше типографическую шкалу описывали вручную и следили за интервалами сами. Теперь шкала встроена, интервал идёт в паре с размером, а браузерные стили заголовков сброшены preflight-ом.
Своя шкала против встроенной
❌ Было
h1 { font-size: 30px; line-height: 36px; letter-spacing: -0.5px; }
h2 { font-size: 24px; line-height: 32px; }
.lead { font-size: 18px; line-height: 28px; color: #475569; }
.caption { font-size: 12px; color: #94a3b8; }
Каждый новый размер — новое правило и новое согласование с дизайнером.
✅ Стало
Заголовок
Подзаголовок
Лид-абзац
Подпись
<div class="space-y-2">
<h1 class="text-3xl font-semibold tracking-tight text-slate-900">Заголовок</h1>
<h2 class="text-2xl font-semibold text-slate-900">Подзаголовок</h2>
<p class="text-lg text-slate-600">Лид-абзац</p>
<p class="text-xs text-slate-400">Подпись</p>
</div>
Заголовки после preflight
Preflight обнуляет размер и вес у
h1–h6:
браузерные значения слишком разные и мешают дизайну. Поэтому заголовок без
классов выглядит как обычный текст — это ожидаемое поведение, а не поломка.<!-- было достаточно тега -->
<h1>Заголовок</h1>
<!-- стало: размер и вес задаются явно -->
<h1 class="text-3xl font-semibold tracking-tight">Заголовок</h1>
Что нового в v4
| Возможность | Комментарий |
|---|---|
text-3xl/9 | размер и межстрочный интервал одним классом |
text-balance, text-pretty | переносы строк без «висящих» слов |
line-clamp-* | в ядре, отдельный плагин не нужен |
font-stretch-* | ширина начертания для вариативных шрифтов |
text-shadow-* | тень текста стала утилитой |
| Шрифт темы | --font-sans в @theme вместо theme.fontFamily |
@theme {
--font-sans: "Inter", ui-sans-serif, system-ui, sans-serif;
--text-hero: 4rem;
--text-hero--line-height: 1.05;
}