Kart card
bilinen diğer adları card · içerik kartı · ürün kartı
Böyle diyorsan: "kutucuk içinde ürün" · "görselli kutular" → bunun adı kart.
Görsel + başlık + aksiyonu tek pakette toplayan kutu; ızgarada dizilir.
Kart, birbirine ait bilgileri tek bir yüzeyde toplayan kaptır: görsel, başlık, açıklama, eylem. Görünüşü kolay, doğru yapması zordur ve zorluğun kaynağı tek bir sorudur: KARTIN TAMAMI TIKLANABİLİR Mİ? Tamamı tıklanabilir olsun istiyorsan içine ikinci bir buton koyamazsın — iç içe tıklanabilir öğe hem geçersiz yapıdır hem kullanıcının hangi eylemi tetiklediğini belirsizleştirir. Yaygın ve doğru çözüm şudur: kartın içinde tek bir gerçek bağlantı bulunur (başlık), o bağlantının tıklama alanı görünmez bir katmanla kart yüzeyine yayılır, diğer eylemler o katmanın üstünde kalır. İkinci mesele ızgaradır: kartların yüksekliği içerikle değişirse ızgara tırtıklı görünür; görsel oranını ve metin satır sayısını sabitlemek bunu çözer.
Kapsam: Bu madde içerik kabını kapsar. Sayfanın en üstündeki büyük tanıtım alanı Vitrin, tablo satırı biçimindeki liste ise Tablo maddesindedir — kart, tablo verisinin mobil karşılığı olarak da kullanılır.
Yapıştır, sonuna belirtiyi ekle — ajana klasik hata kalıplarını önden verir.
- 1Görsel alanı
aspect-ratio: 4/3Sabit oranlı üst bölge — oran sabitlenmezse farklı boyutlu görseller ızgarayı zıplatır.
- 2Başlık + meta
titleÜrün adı ve fiyat/tarih gibi tek satırlık kimlik bilgisi; uzunsa üç noktayla kısalır.
- 3Gövde
line-clampKısa açıklama; satır sayısı sınırlanır ki tüm kartlar aynı boyda kalsın.
- 4Aksiyon satırı
buton/linkAlttaki buton; kartın geneli linkken butonun ayrı tıklanabilmesi klasik incelik ister.
- ANormal
yüzey + içerikKart durur. Yüzeyi neyin ayırdığı belli olmalı: gölge, kenarlık ya da zemin farkı — üçü de yoksa kart değil sadece bir metin bloğudur.
- BHover / odak
:hover, :focus-withinTıklanabilir kart geri bildirim verir. Odak durumu da kartın tamamında görünmeli (:focus-within), yalnız içindeki linkte değil.
- CYükleniyor
iskeletVeri yolda. İskelet kartın GERÇEK ölçüsünde olmalı; tutmazsa ızgara içerik gelince baştan dizilir.
- DSeçili
aria-pressed / checkboxKart bir seçim öğesiyse durumu bildirilmeli. Yalnız kenarlık rengi değiştirmek ekran okuyucuya bir şey söylemez.
- ETaşan içerik
line-clampUzun başlık ya da açıklama. Satır sayısını sınırla ama tamamen gizlediğin bilgiye başka bir yerden ulaşılabilsin.
| CSS | aspect-ratio: 4 / 3 | görsel oranını sabitler |
| CSS | -webkit-line-clamp: 2 | açıklamayı 2 satırla sınırlar |
| CSS | grid + minmax() | duyarlı kart ızgarası |
- İç içe tıklanabilir öğe koyma. Kartın tamamı tıklanacaksa tek bir gerçek bağlantı olsun ve alanı görünmez bir katmanla yayılsın; ikinci eylem gerekiyorsa o katmanın ÜSTÜNDE dursun.
- Bağlantı metni tek başına anlamlı olsun (WCAG 2.4.4). 'Devamını oku' diye on bağlantı, ekran okuyucuda bağlantı listesine bakan kullanıcı için hiçbir şey ifade etmez — başlığın kendisi bağlantı olmalı.
- Odağı kartın tamamında göster (:focus-within); yalnız minik bağlantıda beliren odak halkası klavye kullanıcısına nerede olduğunu söylemez.
- Görselin alt metnini içeriğe göre yaz; kart görseli dekoratifse alt="" bırak, bilgi taşıyorsa anlat.
- Kart bir ızgaradaysa yapıyı liste olarak işaretle (<ul>/<li>); ekran okuyucu kaç kart olduğunu söyleyebilsin.
Tablodan farkı. Kart TEK BİR ŞEYİ bütün olarak tanıtır; tablo çok sayıda şeyi aynı sütunlarda KARŞILAŞTIRIR. Karar sorusu: kullanıcı bu kayıtları birbiriyle kıyaslayacak mı? Kıyaslayacaksa tablo doğrudur, çünkü aynı bilgi hep aynı hizada durur. Kartlarda her kayıt kendi düzenini kurar ve göz kıyaslamak için satır satır gezmek zorunda kalır.
Vitrinden farkı. Kart bir LİSTENİN üyesidir ve benzerleriyle birlikte anlam kazanır; vitrin sayfada TEKTİR ve tek bir mesajı taşır. Kartı vitrin gibi büyütmek listenin ritmini bozar; vitrini kart gibi çoğaltmak ise hiçbirinin öne çıkmaması demektir.
- standartW3C — WCAG 2.2, Link Purpose (In Context) (2.4.4) ↗
'Devamını oku' bağlantılarının neden yetersiz olduğu.
- standartW3C — WCAG 2.2, Info and Relationships (1.3.1) ↗
Kart ızgarasının liste olarak işaretlenmesi.
- birincilW3C — ARIA APG, kalıp listesi ↗
Kart için resmi bir kalıp yoktur; yapıyı bağlantı ve liste kalıplarından kurarsın.
Tam sayfa örneğini aç →üstteki şeritten stil atlayabilirsin
Tablo tableVitrin heroİskelet yükleme skeletonAvatar grubu avatar group