Akordeon accordion
bilinen diğer adları accordion · katlanır bölüm · disclosure · SSS bölümü
Böyle diyorsan: "tıklayınca açılan sorular" · "SSS'deki açılır kapanır şey" → bunun adı akordeon.
Tıklayınca açılıp kapanan dikey başlık listesi; SSS'nin doğal evi.
Akordeon, başlıklara tıklayarak açılıp kapanan bölümler dizisidir. En büyük avantajı yerleşik desteğidir: <details> ve <summary> elementleri açılıp kapanmayı, klavye desteğini ve ekran okuyucu bildirimini hazır verir; üstelik aynı name değerini paylaşan <details> öğeleri kendiliğinden 'tek seferde biri açık' davranışı gösterir. Yani bu parçanın doğru sürümü çoğu zaman yazılması EN KOLAY sürümüdür. Asıl tasarım sorusu ise şudur: içerik gerçekten katlanmayı hak ediyor mu? Kullanıcının okuması beklenen bilgiyi katlamak, onu ekranda temiz gösterip fiilen görünmez kılar — sıkça sorulan sorular buna uygundur, ürünün ana anlatısı değildir.
Kapsam: Bu madde katlanır içerik bölümlerini kapsar. Aynı anda yalnız birinin görüldüğü, eş düzeyli içerikler arasında geçiş Sekmeler maddesindedir; tek bir gizli paneli açan düğme ise Hamburger'in de dayandığı disclosure kalıbıdır.
Yapıştır, sonuna belirtiyi ekle — ajana klasik hata kalıplarını önden verir.
- 1Başlık satırı
<summary> / buttonTıklanabilir soru; TAMAMI tıklanabilir olmalı, sadece ok değil.
- 2Ok göstergesi
▾ dönüşüAçık/kapalı durumunun görsel dili; açıkken 180° döner.
- 3Panel
içerik alanıAçılan cevap; yükseklik animasyonu için max-height/grid tekniği gerekir (height:auto animlanmaz).
- 4Tek-açık kuralı
name grubuSSS'de yeni soru açılınca öncekinin kapanması; native details'te name atrribütü bunu BEDAVA verir.
- AKapalı
aria-expanded="false"Başlık görünür, içerik gizli. Başlığın tıklanabilir olduğu anlaşılmalı: ok işareti ya da imleç değişimi olmadan kullanıcı orada bir şey olduğunu bilmez.
- BAçık
aria-expanded="true"İçerik görünür. Ok ya da artı işareti dönerek durumu anlatır; ama görsel dönüş aria-expanded'ın yerine geçmez.
- CTek açık
<details name="grup">Biri açılınca diğeri kapanır. Yerleşik elemanla bu davranış tek öznitelikle gelir; elle yazmaya gerek yok.
- DHepsi açık
çoklu açıkKarşılaştırma gerekiyorsa serbest bırak. 'Tümünü aç' düğmesi uzun listelerde tarama ve sayfa içi arama için değerlidir.
- EDerin bağlantı
hash ile açılmaBir bölüme doğrudan link verildiyse o bölüm açık gelmeli ve görünür alana kaydırılmalı; kapalı gelen hedef, kullanıcıya boş sayfa gösterir.
| HTML | <details name=grup> + <summary> | tek-açık BEDAVA |
| CSS | grid-template-rows: 0fr→1fr | yükseklik animasyonu |
| ARIA | aria-expanded (custom'da) | durum bildirimi |
- Önce <details> + <summary> dene: klavye, durum bildirimi ve tarayıcı içi arama desteği hazır gelir. Kendi akordeonunu yazarsan bunların hepsini üstlenirsin.
- Başlık gerçek bir düğme olsun ve aria-expanded taşısın; div'e onclick koymak klavye kullanıcısını dışarıda bırakır.
- Başlık metni bölümün içeriğini anlatsın; 'Detaylar' diye altı başlık, bağlantı ve başlık listesine bakan kullanıcı için bilgi taşımaz (WCAG 2.4.6).
- Tarayıcının sayfa içi araması kapalı bölümleri bulamaz. Kritik bilgiyi katlarsan kullanıcı Ctrl+F ile arayamaz — bu, katlamanın görünmeyen bedelidir.
- Yükseklik animasyonu prefers-reduced-motion açıkken sadeleşsin.
Sekmelerden farkı. Akordeonda birden çok bölüm AYNI ANDA açık olabilir; sekmelerde yalnız biri görünür. Karşılaştırma gerekiyorsa akordeon üstündür. Bir de yön farkı vardır: sekmeler yatay yer ister ve mobilde sıkışır, akordeon dikeyde rahat çalışır — bu yüzden aynı içerik masaüstünde sekme, mobilde akordeon olarak sunulabilir.
İpucu balonundan farkı. Akordeon içeriği KALICIDIR: açılır, açık kalır, kopyalanabilir, yazdırılabilir. İpucu balonu geçicidir ve fare çekilince kaybolur. Okunması ve saklanması gereken bir açıklamayı ipucuna koymak, kullanıcıyı onu her seferinde yeniden yakalamaya zorlar.
- birincilW3C — ARIA APG, Accordion kalıbı ↗
Resmi kalıp: başlık düğmeleri, aria-expanded ve panel bağlantısı.
- standartMDN — <details> elementi ↗
Yerleşik açılır bölüm; name özniteliğiyle tek-açık davranışı.
- standartW3C — WCAG 2.2, Headings and Labels (2.4.6) ↗
Başlıkların içeriği tarif etmesi şartı.
Tam sayfa örneğini aç →üstteki şeritten stil atlayabilirsin
Sekmeler tabsİpucu balonu tooltipKart cardAyraç divider