Урок 10. Решения
⚡ Кратко
Разбор трёх заданий, включая две причины обрезанной подсказки.
Решение задания 1
<div class="relative inline-block">
<div class="size-12 rounded-full bg-slate-300"></div>
<span class="absolute right-0 bottom-0 size-3 rounded-full border-2 border-white bg-emerald-500"></span>
</div>
Почему так: точка позиционируется от аватара, потому что
у обёртки стоит relative. Белая рамка отделяет её от фона аватара —
тот же приём, что в группе аватаров из урока 07.
Решение задания 2
Раздел «Документы»
- Файл 1
- Файл 2
- Файл 3
- Файл 4
- Файл 5
- Файл 6
- Файл 7
<div class="h-48 overflow-y-auto rounded-lg border border-slate-200">
<h3 class="sticky top-0 z-10 border-b border-slate-200 bg-white px-4 py-2 text-sm font-semibold text-slate-900">Раздел «Документы»</h3>
<ul class="divide-y divide-slate-100 text-sm text-slate-700">
<li class="px-4 py-2">Файл 1</li><li class="px-4 py-2">Файл 2</li>
<li class="px-4 py-2">Файл 3</li><li class="px-4 py-2">Файл 4</li>
<li class="px-4 py-2">Файл 5</li><li class="px-4 py-2">Файл 6</li>
<li class="px-4 py-2">Файл 7</li>
</ul>
</div>
Почему так: прокрутка живёт у контейнера с
overflow-y-auto, а заголовок липнет к его верху. Непрозрачный фон
и z-10 нужны, чтобы строки не просвечивали сквозь заголовок.
Решение задания 3
Подсказка обрезается, потому что у внешней карточки стоит
overflow-hidden — он обрезает всё, что выходит за её границы,
включая абсолютные элементы.
Способ 1: убрать overflow-hidden у карточки,
если он не нужен для скругления содержимого.
Способ 2: расположить подсказку внутри области карточки — например, снизу от кнопки, а не сверху:
<div class="overflow-hidden rounded-xl border border-slate-200 bg-white p-4">
<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-full left-0 mt-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>
</div>
Способ 3 (правильный для больших интерфейсов): рисовать подсказку через портал вне карточки — так делают библиотеки компонентов.