Урок 01. Решения

📁 Раздел: Введение ⏱️ Время изучения: ~40 мин 🎯 Сложность: Начальная

⚡ Кратко

Готовые решения с живым результатом и объяснением, почему выбраны именно эти классы.

Решение задания 1

Ключ действителен ещё 14 дней
<div class="rounded-lg bg-blue-100 p-4 text-sm text-blue-900">
  Ключ действителен ещё 14 дней
</div>

Почему так: p-4 = 1rem (шкала: 4 × 0.25rem), rounded-lg = 0.5rem, bg-blue-100 и text-blue-900 — те же оттенки палитры, что были записаны шестнадцатеричным кодом, text-sm = 0.875rem. Обратите внимание: цвет текста и фона взяты из одной цветовой группы — это даёт предсказуемый контраст.

Решение задания 2

Панель
<header class="flex items-center justify-between border-b border-slate-200 px-4 py-3">
  <span class="text-sm font-semibold text-slate-900">Панель</span>
  <button class="rounded-md border border-slate-200 px-3 py-1.5 text-sm text-slate-700 hover:bg-slate-50">
    Выйти
  </button>
</header>

Почему так: flex ставит элементы в строку, items-center выравнивает их по вертикали, justify-between разводит по краям — распорка между ними не нужна. Высота шапки получается из py-3, а не из height: так строка не сломается, если текст станет крупнее.

Решение задания 3

В строке p-4 p-8 text-sm text-lg два конфликта: два отступа и два размера текста. Победит не последний класс в атрибуте, а тот, чьё правило идёт ниже в сгенерированном CSS-файле — порядок в атрибуте class браузеру безразличен.

Проверять «на глаз», какой класс победил, — плохая идея: результат зависит от внутреннего порядка утилит в сборке. Конфликтующие утилиты просто не должны попадать в один элемент.

Правильно — оставить по одному классу на свойство:

Текст
<div class="p-4 text-sm">Текст</div>

Когда классы приходят из разных мест (базовые классы компонента плюс className снаружи), конфликт разруливают функцией tailwind-merge — это тема урока 15.