Tablo table
bilinen diğer adları table · veri tablosu · data grid (etkileşimli hâli)
Böyle diyorsan: "satır sütun liste" · "excel gibi görünen liste" → bunun adı tablo.
Satır-sütun düzeninde veri görünümü; sıralama ve satır işlemleri eklenebilir.
Tablo, çok sayıda kaydı aynı sütunlarda karşılaştırmak içindir; gücü hizadan gelir — aynı bilgi hep aynı yerde durduğu için göz kolayca kıyaslar. Bu yüzden tabloyu yerleşim aracı olarak kullanmak (görünüşü tutsun diye) hem anlamı bozar hem ekran okuyucuyu yanıltır. En kritik teknik ayrıntı başlık hücreleridir: <th> ve scope olmadan ekran okuyucu bir hücreyi okurken hangi sütuna ait olduğunu söyleyemez ve kullanıcı sayılar denizinde kaybolur. Mobil ise tablonun doğal düşmanıdır: dar ekranda sütunlar sığmaz ve en yaygın iki çözüm vardır — yatay kaydırma ya da her satırı bir karta dönüştürmek; ikisi de bilinçli bir karardır, kendiliğinden olmaz.
Kapsam: Bu madde veriyi karşılaştıran tabloyu kapsar. Tek bir kaydı bütün olarak tanıtan yüzey Kart, satırların sayfalara bölünmesi Sayfalama maddesindedir. Sıralama, filtre ve satır seçimi eklendiğinde parça bir 'veri ızgarası'na dönüşür ve klavye beklentileri artar.
| Sipariş ↕ | Müşteri | Tutar | Durum | |
|---|---|---|---|---|
| #1042 | Ayşe Y. | ₺450 | Ödendi | ⋯ |
| #1041 | Mehmet K. | ₺120 | Bekliyor | ⋯ |
| #1040 | Zeynep T. | ₺980 | Ödendi | ⋯ |
Yapıştır, sonuna belirtiyi ekle — ajana klasik hata kalıplarını önden verir.
- 1Başlık satırı
th scope=col + aria-sortKolon adları; sıralanabilirse yön oku ve aria-sort taşır.
- 2Veri satırları
tr/tdKayıtlar; zebra çizgileme uzun tablolarda göz kaymasını azaltır.
- 3Durum hücresi
badge/chipMetin yerine renkli durum hapı ('Ödendi') — taranabilirliği artırır.
- 4İşlem menüsü
⋯ dropdownSatır eylemleri tek menüde; satır-tıklama ile ⋯-tıklama ÇAKIŞMAMALI (stopPropagation).
- ANormal
<th scope="col">Başlıklar işaretli. scope olmadan ekran okuyucu hücreyi sütunuyla ilişkilendiremez — tablonun bütün anlamı buna bağlıdır.
- BSıralanmış
aria-sortBir sütuna göre dizili. Yön (artan/azalan) hem görsel okla hem aria-sort ile bildirilmeli; ok tek başına ekran okuyucuya bir şey söylemez.
- CBoş
boş durum satırıFiltre sonuç vermedi. Tabloyu başlıklarıyla boş bırakma; ne olduğunu ve filtreyi nasıl gevşeteceğini söyle.
- DYükleniyor
iskelet satırlarVeri yolda. Satır yüksekliği gerçek satırla eşleşsin, yoksa veri gelince tablo baştan dizilir ve kullanıcı yanlış satıra tıklar.
- EMobil
kaydırma / karta dönüşmeSütunlar sığmıyor. Yatay kaydırma alanı klavyeyle de gezilebilmeli; kart dönüşümünde ise her değerin başlığı satırın yanında tekrar yazılmalı.
| HTML | th scope=col + aria-sort | erişilebilir sıralama |
| CSS | overflow-x:auto konteyner | mobil taşma çözümü |
| UX | tip-farkında sıralama | sayı≠string |
- Başlık hücrelerini <th> ve scope ile işaretle (WCAG 1.3.1). Görsel olarak kalın yazılmış bir <td>, ekran okuyucu için başlık değildir.
- Tabloya bir açıklama ver (<caption>): 'Sipariş listesi, 240 kayıt' gibi. Ekran okuyucu kullanıcısı tabloya girmeden ne olduğunu bilir.
- Sıralama durumunu aria-sort ile bildir; yalnız ok ikonu değiştirmek görsel bir ipucudur.
- Yatay kaydırma kabına klavye erişimi ver (tabindex="0" ve ad); fareyle kaydırılabilen ama klavyeyle gezilemeyen tablo, verinin bir kısmını erişilemez kılar.
- Tabloyu yerleşim için kullanma. Görünüş amacıyla kurulan tablo, ekran okuyucuda 'satır 3, sütun 2' gibi anlamsız bir yapı olarak duyurulur.
Karttan farkı. Tablo KARŞILAŞTIRIR, kart TANITIR. Karar sorusu: kullanıcı bu kayıtları birbiriyle kıyaslayacak mı? Kıyaslayacaksa tablo, çünkü aynı bilgi hep aynı hizadadır. Tek tek inceleyecekse kart, çünkü her kayıt kendi görselini ve düzenini taşıyabilir. Mobilde tablonun karta dönüşmesi de bu yüzden doğaldır: dar ekranda kıyaslama zaten mümkün değildir.
Sayfalamayla ilişkisi. Bunlar rakip değil tamamlayıcıdır: tablo veriyi gösterir, sayfalama onu bölerek gezilebilir kılar. Ayrım şurada önemlidir — tablo içi sıralama ve filtre SUNUCU tarafında yapılıyorsa sayfalama ile birlikte çalışmalıdır; yalnız görünen sayfayı sıralamak, kullanıcıya bütün veriyi sıraladığını sandıran sessiz bir hatadır.
- standartMDN — <table> elementi ↗
Yapı, caption ve erişilebilirlik notları.
- standartMDN — <th> ve scope ↗
Başlık hücresinin hangi hücrelere ait olduğunu bildirmenin yolu.
- standartW3C — WCAG 2.2, Info and Relationships (1.3.1) ↗
Görsel tablo yapısının koda da yazılması şartı.
- standartW3C — WCAG 2.2, Reflow (1.4.10) ↗
Dar ekranda içeriğin iki yönlü kaydırma gerektirmemesi kuralı — tablonun mobil sorunu.
Kart cardSayfalama paginationİskelet yükleme skeletonBoş durum empty state