İskelet yükleme skeleton
bilinen diğer adları skeleton · skeleton screen · yer tutucu yükleme · shimmer
Böyle diyorsan: "içerik gelmeden görünen gri kutular" · "yüklenirken çıkan taslak" → bunun adı i̇skelet yükleme.
İçerik gelmeden önce yerini tutan gri taslak kutular; boş beyaz ekranı önler.
İskelet yükleme, içerik gelmeden önce onun ŞEKLİNİ çizer: başlığın olacağı yere gri bir çubuk, görselin olacağı yere gri bir kutu. Spinner'dan üstün olduğu yer bilgi miktarıdır — kullanıcı ne geleceğini önceden görür, sayfanın yapısını okumaya başlar ve bekleme daha kısa hissedilir. Ama tek bir şartla işe yarar: iskelet, gerçek içerikle AYNI ölçüde olmalıdır. Boyu tutmayan iskelet, içerik gelince yerleşimi zıplatır ve o an kullanıcı tıklamak üzere olduğu şeyi kaçırır; bu durumda iskelet, sorunu çözmek yerine yeni bir sorun üretmiş olur.
Kapsam: Bu madde gelecek içeriğin yerini tutan yükleme desenini kapsar. Süresi bilinmeyen tek bir işlem için Spinner, ölçülebilir bir iş için İlerleme Çubuğu kullanılır. Veri gelmiş ama BOŞ çıkmışsa gösterilecek şey iskelet değil Boş Durum'dur.
Yapıştır, sonuna belirtiyi ekle — ajana klasik hata kalıplarını önden verir.
- 1Yer tutucu bloklar
gri şekillerGelecek içeriğin silueti: avatar yuvarlağı, başlık çubuğu, metin satırları.
- 2Boyut eşleşmesi
gerçekle birebirİskeletin TEK görevi: içerik gelince HİÇBİR ŞEYİN zıplamaması. Boylar gerçek bileşenle aynı olmalı.
- 3Parıltı
pulse/shimmerHafif soluklaşma animasyonu 'yükleniyor' der; satır genişlikleri değişken olursa doğal durur.
- 4Geçiş
fade + min süreVeri gelince yumuşak geçiş; 200ms'den kısa yüklemede iskelet HİÇ gösterilmez (flaş önleme).
- AGösterilmiyor
eşik altıVeri çok hızlı geldi. Kısa beklemelerde iskelet gösterip hemen kaldırmak ekranı çakıştırır; küçük bir gecikme eşiği koy.
- BGösteriliyor
aria-busy="true"Yapı çizili, içerik yolda. Bölge güncellenmekte olarak işaretlenmeli ki ekran okuyucu yarım içeriği okumaya çalışmasın.
- CParıldıyor
shimmerHareketli parlama beklemenin sürdüğünü söyler. Şart değildir; prefers-reduced-motion açıkken durdurulmalıdır.
- Dİçerik geldi
değişimİskelet gerçek içerikle yer değiştirir. Ölçüler tutuyorsa hiçbir şey zıplamaz; tutmuyorsa iskeletin bütün faydası burada kaybolur.
- EVeri boş geldi
boş durumİş bitti ama sonuç yok. İskeleti sonsuza kadar döndürme; boş durum ekranına geç ve ne yapılabileceğini söyle.
| UX | gerçek bileşenle boy eşleşmesi | zıplama sıfır |
| React | Suspense fallback | doğal bağlama noktası |
| UX | min-gösterim eşiği (~200ms) | flaş önleme |
- Yükleme bölgesini aria-busy="true" ile işaretle; aksi hâlde ekran okuyucu anlamsız yer tutucu kutuları okumaya çalışır.
- İskelet kutularını ekran okuyucudan gizle (aria-hidden): bunlar görsel bir vaattir, okunacak içerik değildir.
- Ölçüleri gerçek içerikle eşleştir. Zıplayan yerleşim yalnız estetik sorun değildir; tıklamak üzere olan kullanıcı yanlış öğeye basar.
- Parıltı animasyonunu prefers-reduced-motion açıkken durdur (WCAG 2.2.2).
- Sonsuz iskelet gösterme: istek başarısız olduysa hata durumuna, veri boş geldiyse boş duruma geç. Sürekli parıldayan gri kutular kullanıcıya arayüzün donduğunu düşündürür.
Spinner'dan farkı. İskelet 'ne geleceğini' gösterir, spinner yalnız 'bekle' der. Yapı biliniyorsa iskelet daha çok bilgi verir ve bekleme daha kısa hissedilir. Ama yapı bilinmiyorsa iskelet uydurmak zararlıdır: gelmeyecek bir düzeni vaat etmiş olursun ve içerik geldiğinde ekran baştan kurulur.
Boş durumdan farkı. İskelet 'veri YOLDA' der, boş durum 'veri YOK' der. İkisi karıştırıldığında ortaya en sinir bozucu arayüzlerden biri çıkar: sonsuza kadar parıldayan gri kutular. Veri geldi ve boşsa iskeleti bırakıp boş duruma geçmek zorundasın — bekleme bitmiştir, söylenecek şey değişmiştir.
- standartMDN — aria-busy ↗
Güncellenmekte olan bölgenin işaretlenmesi.
- standartMDN — prefers-reduced-motion ↗
Parıltı animasyonunun kapatılması.
- standartW3C — WCAG 2.2, Pause, Stop, Hide (2.2.2) ↗
Otomatik hareketin durdurulabilmesi şartı.
Dönen yükleyici spinner / loaderİlerleme çubuğu progress barBoş durum empty stateKart card