Bir image carousel (slider) bileşenini nasıl tasarlarsınız?
Cevap
İyi bir carousel; esnek bir bileşen API'si, akıcı geçişler, lazy loading ve tam klavye/ekran okuyucu desteği ister.
Bileşen API'si
<Carousel
images={[{ src, alt, width, height }]}
initialIndex={0}
loop
autoPlayMs={5000}
onChange={(index) => {}}
/>Uygulama seçenekleri
- CSS scroll-snap:
overflow-x: auto; scroll-snap-type: x mandatory;ile dokunmatik kaydırma tarayıcıdan bedava gelir; JavaScript sadece butonlar ve indeks takibi için kullanılır (IntersectionObserver ile aktif slayt bulunur). - transform: translateX: Tam kontrol ve sonsuz döngü (ilk/son slaytın klonlanması) için.
transformanimasyonu GPU'da çalışır, layout tetiklemez.
Performans
- Sadece aktif ve komşu görseller yüklenir (
loading="lazy", sonraki görseli önceden yükleme). srcset/sizesile ekrana uygun boyut,aspect-ratioile CLS önleme.
Erişilebilirlik
- Kapsayıcıda
aria-roledescription="carousel", her slayttarole="group"vearia-label="3 / 8". - Önceki/sonraki butonları gerçek
<button>olmalı, ok tuşlarıyla gezinme. - Otomatik oynatma: hover/focus'ta durmalı, durdurma butonu olmalı ve
prefers-reduced-motionaçıksa kapatılmalı.
Kenar durumları
Tek görsel, görsel yüklenemezse fallback, RTL dillerde yönün tersine dönmesi, pencere boyutu değişince yeniden hesaplama.
İlgili Frontend Sistem Tasarımı soruları
- Bir autocomplete (typeahead) arama bileşenini nasıl tasarlarsınız?
- Bir frontend sistem tasarımı mülakatına nasıl yaklaşırsınız? Hangi adımları izlersiniz?
- Offline-first çalışan bir web uygulamasını (ör. not alma uygulaması) nasıl tasarlarsınız?
- Çok dilli (i18n) bir frontend uygulamasını nasıl tasarlarsınız?
- Micro-frontend mimarisi nedir? Ne zaman tercih edilir, dezavantajları nelerdir?
- Büyük bir React uygulamasında state management mimarisini nasıl kurgularsınız?
Bu konuda başka bir soru biliyor musun?
Mülakatta karşılaştığın soruları ekle, onaylandıktan sonra yayına alınsın.