Wzorzec 04
Kafelki w równym rytmie
Siatka kart z justify-between rozjeżdża się przy pierwszej dłuższej treści: każdy kafelek rozkłada wolną przestrzeń po swojemu i nagłówki lądują na różnych wysokościach. Subgrid oddaje wiersze kart rodzicowi, więc cały rząd dzieli jedną geometrię bez zgadywania minimalnych wysokości.
Dwa kafelki, różna ilość treści
Po lewej każdy kafelek rozkłada wolną przestrzeń po swojemu. Po prawej wiersze należą do wspólnej siatki i wszystko leży w jednym rytmie.
✕ justify-between w kafelku
Atlas
Identyfikacja i prosta strona.
Zobacz projekt →
Panel Heliotrop dla zespołów
Analityka, poziomy uprawnień i raporty tygodniowe wysyłane prosto do klienta.
Zobacz projekt →
✓ wspólne wiersze przez subgrid
Atlas
Identyfikacja i prosta strona.
Zobacz projekt →
Panel Heliotrop dla zespołów
Analityka, poziomy uprawnień i raporty tygodniowe wysyłane prosto do klienta.
Zobacz projekt →
Reguły
- Kafelek dziedziczy wiersze z rodzica przez grid-template-rows: subgrid i rozpięcie row-span.
- Nagłówki, opisy i stopki sąsiednich kart leżą na wspólnych liniach niezależnie od długości treści.
- Wyrównanie nie wymaga min-height, sztucznych odstępów ani przycinania treści do wymyślonej liczby linii.
- W pojedynczej kolumnie subgrid niczego nie zmienia, więc układ mobilny nie potrzebuje wyjątków.
Wzorzec w kodzie
<div className="grid gap-4 sm:grid-cols-2">
{cards.map((card) => (
<a
key={card.slug}
className="grid row-span-3 grid-rows-subgrid gap-y-4 rounded-2xl border p-6"
>
<p className="font-mono">{card.number}</p>
<h3 className="text-xl font-semibold">{card.title}</h3>
<p className="text-sm">{card.description}</p>
</a>
))}
</div>.tile {
display: grid;
grid-row: span 3;
grid-template-rows: subgrid;
row-gap: 1rem;
}