Урок 10. Примеры: метки, липкие панели, оверлеи
⚡ Кратко
Шесть примеров: метка на карточке, кнопка поверх обложки, липкая панель, модальное окно, подсказка и горизонтальная лента.
1. Метка на карточке товара
−30%
Наушники
7 900 ₽ 5 530 ₽
<div class="relative w-56 overflow-hidden rounded-xl border border-slate-200 bg-white">
<span class="absolute top-3 left-3 z-10 rounded-full bg-rose-600 px-2 py-0.5 text-xs font-semibold text-white">−30%</span>
<div class="h-28 bg-slate-100"></div>
<div class="p-4">
<h3 class="text-sm font-medium text-slate-900">Наушники</h3>
<p class="mt-1 text-sm text-slate-500"><s class="text-slate-400">7 900 ₽</s> 5 530 ₽</p>
</div>
</div>
2. Кнопка поверх обложки
Вебинар
Tailwind на практике
<div class="relative h-36 w-full max-w-md overflow-hidden rounded-xl">
<div class="absolute inset-0 bg-linear-to-r from-slate-800 to-slate-600"></div>
<div class="absolute inset-0 flex items-center justify-between p-5">
<div>
<p class="text-xs font-semibold uppercase tracking-widest text-white/70">Вебинар</p>
<h3 class="mt-1 text-lg font-semibold text-white">Tailwind на практике</h3>
</div>
<button class="rounded-md bg-white px-3 py-2 text-sm font-medium text-slate-900 hover:bg-slate-100">Смотреть</button>
</div>
</div>
3. Липкая панель действий
Выбрано: 3
- Документ 1
- Документ 2
- Документ 3
- Документ 4
- Документ 5
- Документ 6
- Документ 7
- Документ 8
<div class="h-56 overflow-y-auto rounded-lg border border-slate-200 bg-white">
<div class="sticky top-0 z-10 flex items-center justify-between border-b border-slate-200 bg-white/95 px-4 py-2">
<span class="text-sm font-semibold text-slate-900">Выбрано: 3</span>
<div class="flex gap-2">
<button class="rounded-md border border-slate-300 px-2 py-1 text-xs text-slate-700">Экспорт</button>
<button class="rounded-md bg-rose-600 px-2 py-1 text-xs text-white">Удалить</button>
</div>
</div>
<ul class="divide-y divide-slate-100 text-sm text-slate-700">
<li class="px-4 py-3">Документ 1</li><li class="px-4 py-3">Документ 2</li>
<li class="px-4 py-3">Документ 3</li><li class="px-4 py-3">Документ 4</li>
<li class="px-4 py-3">Документ 5</li><li class="px-4 py-3">Документ 6</li>
<li class="px-4 py-3">Документ 7</li><li class="px-4 py-3">Документ 8</li>
</ul>
</div>
4. Модальное окно (статичная демонстрация)
Страница под окном
Подтвердите действие
Документ будет перемещён в архив.
<div class="relative h-56 overflow-hidden rounded-lg bg-slate-100">
<div class="p-4 text-sm text-slate-500">Страница под окном</div>
<div class="absolute inset-0 z-40 bg-slate-900/50"></div>
<div class="absolute inset-x-6 top-1/2 z-50 -translate-y-1/2 rounded-xl bg-white p-5 shadow-2xl">
<h3 class="text-sm font-semibold text-slate-900">Подтвердите действие</h3>
<p class="mt-1 text-sm text-slate-600">Документ будет перемещён в архив.</p>
<div class="mt-4 flex justify-end gap-2">
<button class="rounded-md border border-slate-300 px-3 py-1.5 text-sm text-slate-700">Отмена</button>
<button class="rounded-md bg-slate-900 px-3 py-1.5 text-sm text-white">В архив</button>
</div>
</div>
</div>
В реальном приложении такой блок рисуют через портал в конце
body с fixed inset-0 — тогда он гарантированно
окажется поверх всего. Готовый компонент — в уроке 21.
5. Подсказка при наведении
Наведите курсор на кнопку.
Подсказка появляется по наведению
<div class="group relative inline-block">
<button class="rounded-md border border-slate-300 px-3 py-2 text-sm text-slate-700">Что это?</button>
<span class="pointer-events-none absolute -top-9 left-1/2 -translate-x-1/2 rounded-md bg-slate-900 px-2 py-1 text-xs whitespace-nowrap text-white opacity-0 transition-opacity group-hover:opacity-100">
Подсказка появляется по наведению
</span>
</div>
pointer-events-none нужен, чтобы подсказка не перехватывала
курсор и не мешала кликнуть по кнопке.
6. Горизонтальная лента с прилипанием
Слайд 1
Слайд 2
Слайд 3
Слайд 4
<div class="flex snap-x snap-mandatory gap-3 overflow-x-auto rounded-lg border border-slate-200 p-3">
<div class="w-40 shrink-0 snap-center rounded-lg bg-sky-100 p-4 text-sm text-sky-900">Слайд 1</div>
<div class="w-40 shrink-0 snap-center rounded-lg bg-emerald-100 p-4 text-sm text-emerald-900">Слайд 2</div>
<div class="w-40 shrink-0 snap-center rounded-lg bg-amber-100 p-4 text-sm text-amber-900">Слайд 3</div>
<div class="w-40 shrink-0 snap-center rounded-lg bg-violet-100 p-4 text-sm text-violet-900">Слайд 4</div>
</div>