CSS Tab Generatörü
Sekmeler her yerde karşımıza çıkar: ayar panelleri, belge siteleri, ürün galerileri. Yerel HTML’de özel bir sekme öğesi yoktur; bu yüzden geliştiriciler kendi çözümlerini yazar. Bu araç, HTML + CSS ile basit bir sekme çubuğu oluşturur: aktif sekme için bir vurgu rengi, düğmeler için bir köşe yarıçapı ve bir üzerine gelme durumu. İşaretlemeyi projenize yapıştırın ve sekme değiştirmeyi kendi JavaScript kodunuzla bağlayın.
Sekmeler nasıl oluşturulur
-
1
Bir vurgu rengi seçin
Aktif sekmeye ait arka plan ve metin rengi. Markanıza uygun bir renk seçin.
-
2
Köşe yarıçapını ayarlayın
Sekme düğmelerinin üst köşelerini yuvarlar. Daha yüksek değerler daha yumuşak bir görünüm sağlar.
-
3
Etiketleri düzenleyin
Çıktı, "Overview", "Details" ve "Settings" olmak üzere üç düğme içerir: içeriğinize göre yeniden adlandırın.
-
4
Kodu kopyalayın
Sekme işaretlemesi, kendi <style> bloğuyla birlikte gelir. İkisini de sayfanıza yapıştırın.
-
5
Sekme değiştirmeyi ekleyin
Oluşturucu yalnızca görsel kısmı üretir. Panelleri gösterip gizlemek için düğmeleri kendi JavaScript kodunuza veya UI kitaplığınıza bağlayın.
Doğru erişilebilir işaretleme
<div class="tabs">
<div role="tablist" aria-label="Product info">
<button role="tab" id="tab-1" aria-selected="true" aria-controls="panel-1" tabindex="0">Overview</button>
<button role="tab" id="tab-2" aria-selected="false" aria-controls="panel-2" tabindex="-1">Specs</button>
<button role="tab" id="tab-3" aria-selected="false" aria-controls="panel-3" tabindex="-1">Reviews</button>
</div>
<section role="tabpanel" id="panel-1" aria-labelledby="tab-1">...</section>
<section role="tabpanel" id="panel-2" aria-labelledby="tab-2" hidden>...</section>
<section role="tabpanel" id="panel-3" aria-labelledby="tab-3" hidden>...</section>
</div>
Kritik nitelikler:
role="tablist"düğmeleri sarar.- Her düğmede
role="tab"bulunur; ayrıcaaria-selectedvearia-controlsyer alır. tabindex, roving tabindex desenini kullanır: yalnızca aktif sekme0, diğerleri-1'dir. Ok tuşları odağı bu sekmeler arasında taşır.- Her panelde
role="tabpanel"bulunur vearia-labelledbykendi sekmesini işaret eder. - Aktif olmayan panellerde
hiddenkullanılır (yalnızcadisplay: nonedeğil; yardımcı teknolojilerin kullandığı nitelik budur).
Klavye sözleşmesi
| Tuş | Eylem |
|---|---|
| Tab | Sekme listesine girme / çıkma |
| ArrowLeft | Önceki sekme (sonuncuya döner) |
| ArrowRight | Sonraki sekme (ilkine döner) |
| Home | İlk sekme |
| End | Son sekme |
| Enter / Space | Odaktaki sekmeyi etkinleştir (manuel etkinleştirmede) |
Otomatik etkinleştirme (odak hareket ettikçe sekme etkinleşir) ile manuel etkinleştirme (odak hareket eder, sekme Enter'a basıldığında etkinleşir) karşılaştırıldığında, WAI-ARIA her ikisine de izin verir. Otomatik yöntem gören kullanıcılar için daha kolaydır; sekme içeriğinin işlenmesi ağır olduğunda manuel yöntem daha iyidir.
Alt çizgili stil
[role="tablist"] {
display: flex;
border-bottom: 1px solid #e5e7eb;
}
[role="tab"] {
padding: 0.75rem 1rem;
background: transparent;
border: 0;
color: #6b7280;
position: relative;
cursor: pointer;
}
[role="tab"][aria-selected="true"] {
color: #111827;
}
[role="tab"][aria-selected="true"]::after {
content: "";
position: absolute;
left: 1rem; right: 1rem; bottom: -1px;
height: 2px;
background: #2563eb;
}
Hap stili
[role="tab"] {
padding: 0.5rem 0.9rem;
border-radius: 9999px;
border: 0;
background: transparent;
}
[role="tab"][aria-selected="true"] {
background: #2563eb;
color: #fff;
}
Görünür odak
Odak klavye üzerinden geldiğinde her zaman bir odak halkası çizin:
[role="tab"]:focus-visible {
outline: 2px solid #60a5fa;
outline-offset: 2px;
}
JavaScript
Yaklaşık olarak:
const tabs = document.querySelectorAll('[role="tab"]');
tabs.forEach(tab => {
tab.addEventListener('click', () => activate(tab));
tab.addEventListener('keydown', e => {
const i = [...tabs].indexOf(tab);
if (e.key === 'ArrowRight') tabs[(i + 1) % tabs.length].focus();
if (e.key === 'ArrowLeft') tabs[(i - 1 + tabs.length) % tabs.length].focus();
if (e.key === 'Home') tabs[0].focus();
if (e.key === 'End') tabs[tabs.length - 1].focus();
});
});
function activate(tab) {
tabs.forEach(t => {
const panel = document.getElementById(t.getAttribute('aria-controls'));
const active = t === tab;
t.setAttribute('aria-selected', active);
t.setAttribute('tabindex', active ? '0' : '-1');
panel.hidden = !active;
});
tab.focus();
}
Toplam otuz satır, sıfır bağımlılık.
Sekmeler mi, akordeon mu?
Dar ekranlarda sekme satırları sıkışır. Yaygın desen: masaüstünde sekmeler, mobilde akordeon. ARIA rollerini değiştirmeden görsel sunumu değiştirmek için bir konteyner sorgusu (container query) veya medya sorgusu (media query) kullanın.
Sık Sorulan Sorular
Erişilebilir sekmeler için evet. role="tablist" ve role="tab" olmadan ekran okuyucular bu düğmeleri sıradan düğmeler gibi görür ve kullanıcılar sekme navigasyonu alışkanlığını kaybeder. Alternatif, yerleşik anlambilime sahip basit bir <details> / <summary> akordeonudur.
Otomatik mod (odak hareket ettikçe sekme etkinleşir), her sekmenin içeriğinin işlenmesi kolay olduğunda uygundur. Manuel mod (odak hareket eder, Enter etkinleştirir) ise sekme değiştirmek büyük bir formun getirilmesi veya işlenmesi gibi ağır işleri tetiklediğinde daha iyidir.
İçerik taşıyan sekmeler (belgeler, ürün sekmeleri) için: Evet – bağlantıların belirli bir sekmeye doğrudan gidebilmesi ve aktif sekmenin sayfa yeniden yüklendiğinde korunması için bir hash (#specs) veya sorgu parametresi kullanın. Arayüz sekmeleri (ayar panelleri) için URL isteğe bağlıdır.
Yalnızca ok tuşu navigasyonu ve ARIA durumları bulunmayan onay kutusu/radyo düğmesi hilesiyle. Gerçekten erişilebilir bir uygulama için bu küçük JS parçası buna değer. Sunucuda işlenen yedek çözümlere ihtiyaç duyarsanız, her sekmeyi benzersiz bir URL'e bağlayın ve ilgili paneli sunucu tarafında işleyin.
İlgili Araçlar
ASCII Tablosu Referansı
NUL, LF ve DEL dahil her kod için ondalık, onaltılık, sekizlik ve ikili değerlerle HTML sayısal karakter başvurusu gösterimini sunan tam ASCII tablosu.
HTML Karakter Referansı
HTML varlıklarının aranabilir listesi; adlandırılmış ve sayısal kodlarıyla birlikte özel karakter ve semboller için tek tıkla kopyalama.
Klavye kısayolları başvurusu
macOS, Windows ve Linux’ta VS Code, Chrome ve GNU Readline kullanan Bash için belgelenmiş varsayılan kısayolları arayın.
EditorConfig Oluşturucu
Girinti stili ve boyutu, satır sonu, karakter kümesi ve boşluk kurallarınızla bir .editorconfig dosyası oluşturarak IDE ve editörler arasında tutarlı biçimlendirme sağlayın.
E-posta Doğrulayıcı
Bir e-posta adresini doğrulayın: RFC 5322 sözdizimi kontrolü, canlı MX kaydı sorgulama, ayrıca yerel kısım, alan adı ve uzunluk bilgileri. Hiçbir e-posta gönderilmez.
Gradyan Duvar Kağıdı Oluşturucu
Dizüstü bilgisayar, telefon veya Zoom arka planları için bulanık üç renkli gradyan duvar kağıtları oluşturun. Açıyı ve bulanıklığı rastgele belirleyin ya da elle ayarlayın.
Araç diğer dillerde mevcuttur
- CSS-Tabs-Generator [DE]
- Gerador de Abas CSS [PT]
- CSS-flikgenerator [SV]
- Trình tạo tab CSS [VI]
- ตัวสร้างแท็บส์ CSS [TH]
- Generador de Pestañas CSS [ES]
- CSSタブジェネレーター [JA]
- Générateur d'onglets CSS [FR]
- CSS 탭 생성기 [KO]
- Generator Tab CSS [ID]
- مولد علامات التبويب CSS [AR]
- Generator kart (tabs) CSS [PL]
- CSS Tabs Generator [NL]
- CSS Tabs Generator [EN]
- Generatore di schede CSS [IT]
- Генератор вкладок CSS [RU]
- CSS标签生成器 [ZH]