Кнопка и карточка

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

Кнопка по слоям

Разберём кнопку класс за классом, чтобы понять, за что отвечает каждый:

<button class="inline-flex items-center px-5 py-2.5 bg-blue-600 hover:bg-blue-700 text-white font-medium rounded-lg shadow-sm">
  Сохранить
</button>
  • inline-flex items-center — содержимое в ряд и по центру по вертикали (пригодится, если добавите иконку);
  • px-5 py-2.5 — комфортные отступы внутри;
  • bg-blue-600 + hover:bg-blue-700 — синий фон, темнеющий при наведении;
  • text-white font-medium — белый, чуть плотный текст;
  • rounded-lg shadow-sm — скруглённые углы и лёгкая тень.

Итог: аккуратная синяя кнопка с откликом на наведение — её видно как «нажимаемую».

Вторичная кнопка

Тот же скелет, но без заливки — для второстепенных действий:

<button class="px-5 py-2.5 border border-gray-300 hover:bg-gray-50 text-gray-700 font-medium rounded-lg">
  Отмена
</button>

Получится кнопка с рамкой и без фона; при наведении фон чуть подсвечивается серым. Контраст с основной кнопкой подсказывает, какое действие главное.

Карточка

Карточка — это контейнер с фоном, скруглением, тенью и внутренним отступом:

<div class="max-w-sm bg-white rounded-xl shadow-md overflow-hidden">
  <img class="w-full h-40 object-cover" src="cover.jpg" alt="">
  <div class="p-5">
    <h3 class="text-lg font-semibold text-gray-900">Заголовок</h3>
    <p class="mt-2 text-gray-600">Краткое описание карточки в пару строк.</p>
    <button class="mt-4 px-4 py-2 bg-blue-600 text-white rounded-lg">Подробнее</button>
  </div>
</div>

Разбор: max-w-sm ограничивает ширину; overflow-hidden обрезает картинку по скруглённым углам; object-cover заполняет область картинкой без искажений; внутренний блок с p-5 держит отступы текста. Заголовок тёмный и полужирный, описание серее и мельче, кнопка отбита сверху через mt-4.

Почему такой набор

Эти рецепты — не магия, а сумма того, что мы прошли: отступы, цвета, типографика, скругления и тени. Каждый компонент собирается из знакомых утилит, поэтому его легко менять под себя.

Итог

  • Кнопка = отступы + цвет фона + hover: + текст + скругление + тень.
  • Вторичная кнопка отличается лишь заменой заливки на рамку — тот же скелет.
  • Карточка = контейнер с фоном/скруглением/тенью, картинка с object-cover и блок с отступом для текста.
Проверьте себя
1. За что отвечает object-cover у картинки в карточке?
AСкрывает картинку
BЗаполняет заданную область картинкой без искажения пропорций
CДелает картинку круглой
DДобавляет тень
2. Зачем карточке overflow-hidden, если у неё скруглённые углы и картинка сверху?
AЧтобы скрыть текст
BЧтобы картинка обрезалась по скруглённым углам контейнера
CЧтобы убрать тень
DЧтобы добавить отступ
3. Чем вторичная кнопка обычно отличается от основной?
AДругим размером шрифта
BВместо сплошной заливки — рамка без фона
CОтсутствием отступов
DОна всегда disabled
Поддержать проект