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
FPS Sayacı
requestAnimationFrame ile tarayıcı FPS değerini ölçün: yumuşatma, en düşük ve en yüksek kare hızı, uyarı eşiği ve isteğe bağlı grafik. Yerel çalışır, yükleme ve API yoktur.
Dosya Boyutu Dönüştürücü
Bayt, KB, MB, GB, TB ve ikili IEC birimleri (KiB, MiB, GiB, TiB) arasında, ondalık ve ikiliyi dilediğiniz gibi birleştirerek dönüşüm yapın.
Telefon numarası doğrulayıcı
Telefon numarasının ülkeye göre yapısını denetleyin; bölge, tür, E.164, uluslararası, ulusal ve RFC 3966 biçimlerini görün.
Kurgusal telefon numarası oluşturucu
Beş ülkede resmen ayrılmış aralıklardan 50 adede kadar kurgusal numara üretin.
Webpack Yapılandırma Oluşturucu
Kısa bir formdan webpack 5 için bir webpack.config.js oluşturun: entry, çıkış klasörü ve modu ayarlayın; ardından TypeScript, Babel, bir CSS yükleyici, HtmlWebpackPlugin ve bir dev sunucu açın.
Rastgele adres oluşturucu
Arayüz maketleri ve testler için üç basitleştirilmiş biçimde 1–20 adres benzeri kayıt oluşturun.
Araç diğer dillerde mevcuttur
- CSSタブジェネレーター [JA]
- CSS-flikgenerator [SV]
- CSS-Tabs-Generator [DE]
- Generator Tab CSS [ID]
- مولد علامات التبويب CSS [AR]
- CSS Tabs Generator [NL]
- Générateur d'onglets CSS [FR]
- Generator kart (tabs) CSS [PL]
- Gerador de Abas CSS [PT]
- Generador de Pestañas CSS [ES]
- Trình tạo tab CSS [VI]
- CSS 탭 생성기 [KO]
- ตัวสร้างแท็บส์ CSS [TH]
- CSS Tabs Generator [EN]
- Generatore di schede CSS [IT]
- Генератор вкладок CSS [RU]
- CSS标签生成器 [ZH]