Generator Tab CSS
Tab tersebar di mana-mana: panel pengaturan, situs dokumentasi, hingga galeri produk. HTML bawaan tidak menyediakan elemen tab khusus, sehingga para pengembang membuatnya sendiri. Generator ini membuat bilah tab sederhana dalam HTML + CSS: warna aksen untuk tab aktif, radius sudut untuk tombol, dan keadaan hover. Tempel markupnya ke proyek Anda dan sambungkan perpindahan tab ke JavaScript buatan sendiri.
Cara membuat tab
-
1
Pilih warna aksen
Warna latar dan teks tab aktif. Pilih warna yang sesuai merek Anda.
-
2
Atur radius sudut
Membulatkan sudut atas tombol tab. Nilai yang lebih besar memberi kesan lebih lembut.
-
3
Edit label
Hasilnya berisi tiga tombol, "Overview", "Details", dan "Settings": ganti namanya agar sesuai konten Anda.
-
4
Salin kodenya
Markup tab disertai blok <style> sendiri. Tempel keduanya ke halaman Anda.
-
5
Tambahkan perpindahan tab
Generator hanya membuat bagian visualnya. Sambungkan tombol ke JavaScript atau pustaka UI buatan sendiri untuk menampilkan dan menyembunyikan panel.
Markup yang benar dan dapat diakses
<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>
Atribut penting:
role="tablist"membungkus tombol-tombol tersebut.role="tab"pada setiap tombol, bersamaaria-selecteddanaria-controls.tabindexmenggunakan pola roving tabindex: hanya tab yang aktif yang bernilai0, sedangkan tab lainnya-1. Tombol panah memindahkan fokus di antara tab-tab tersebut.role="tabpanel"pada setiap panel, denganaria-labelledbyyang menunjuk ke tabnya.hiddenpada panel yang tidak aktif (bukan hanyadisplay: none; atribut inilah yang dipakai teknologi bantu).
Aturan keyboard
| Tombol | Aksi |
|---|---|
| Tab | Masuk / keluar dari daftar tab |
| ArrowLeft | Tab sebelumnya (berputar ke tab terakhir) |
| ArrowRight | Tab berikutnya (berputar ke tab pertama) |
| Home | Tab pertama |
| End | Tab terakhir |
| Enter / Space | Aktifkan tab yang sedang difokuskan (jika diaktifkan secara manual) |
Aktivasi otomatis (tab berganti saat fokus bergerak) versus aktivasi manual (tab aktif saat fokus bergerak dan tombol Enter ditekan) – WAI-ARIA mendukung keduanya. Aktivasi otomatis lebih mudah digunakan oleh pengguna yang memiliki penglihatan normal; sedangkan aktivasi manual lebih tepat ketika konten tab memerlukan proses rendering yang kompleks.
Gaya garis bawah
[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;
}
Gaya pil
[role="tab"] {
padding: 0.5rem 0.9rem;
border-radius: 9999px;
border: 0;
background: transparent;
}
[role="tab"][aria-selected="true"] {
background: #2563eb;
color: #fff;
}
Fokus yang terlihat
Selalu gambarkan cincin fokus ketika fokus datang melalui keyboard:
[role="tab"]:focus-visible {
outline: 2px solid #60a5fa;
outline-offset: 2px;
}
JavaScript
Secara kasar:
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();
}
Total tiga puluh baris, tanpa ketergantungan sama sekali.
Tab vs. Akordeon
Pada layar sempit, baris tab menjadi sempit. Pola umumnya sama: tampilan tab pada desktop, sedangkan tampilan akordion pada perangkat seluler. Gunakan kueri kontainer atau kueri media untuk mengubah tampilan visual tanpa mengubah peran ARIA.
Pertanyaan yang Sering Diajukan
Untuk tab yang mudah diakses, ya. Tanpa role="tablist" dan role="tab", pembaca layar akan memperlakukan tombol-tombol tersebut sebagai tombol biasa, sehingga pengguna kehilangan konvensi navigasi yang berlaku. Alternatifnya adalah tata letak akordeon sederhana menggunakan kode <details>/<summary> yang telah memiliki makna bawaan.
Pilihan otomatis (tab aktif saat fokus bergerak) cocok digunakan ketika konten setiap tab mudah dirender. Sementara itu, pilihan manual (fokus bergerak dan tombol Enter yang mengaktifkan tab) lebih baik jika pergantian tab memerlukan proses yang kompleks, seperti pengambilan data atau rendering formulir besar.
Untuk tab yang berisi konten (seperti dokumen atau tab produk), ya, gunalah hash (#specs) atau parameter kueri agar tautan dapat mengarah ke tab tertentu secara langsung, dan tab aktif tetap terjaga meskipun aplikasi dimuat ulang. Untuk tab antarmuka pengguna (panel pengaturan), URL bersifat opsional.
Hanya dengan menggunakan solusi sementara berupa kotak centang atau radio, yang tidak memiliki fitur navigasi menggunakan tombol panah maupun atribut ARIA. Namun, untuk implementasi yang benar-benar aksesibel, fragmen kode JS yang singkat ini sangat sepadan. Jika Anda memerlukan opsi cadangan yang ditampilkan oleh server, hubungkan setiap tab dengan URL unik dan tampilkan panel terkait secara langsung di sisi server.
Alat Terkait
Referensi Tabel ASCII
Tabel ASCII lengkap dari 0 sampai 127 dengan desimal, heksadesimal, oktal, biner, dan referensi karakter numerik HTML untuk setiap karakter, termasuk kode kontrol seperti NUL, LF, dan DEL.
Referensi Karakter HTML
Daftar entitas HTML yang dapat dicari, beserta kode bernama dan kode numeriknya, serta fitur salin dengan satu klik untuk karakter khusus dan simbol.
Referensi pintasan papan ketik
Cari pintasan bawaan terdokumentasi untuk VS Code, Chrome, dan Bash dengan GNU Readline di macOS, Windows, dan Linux.
Generator Warna Acak
Buat 1 hingga 50 warna HEX acak dengan contoh warna yang bisa dipratinjau, disalin, dan dipakai di CSS, pengujian, atau eksplorasi palet.
Penghitung FPS
Ukur FPS browser dengan requestAnimationFrame: penghalusan, frame rate minimum dan maksimum, ambang peringatan, dan grafik opsional. Berjalan lokal, tanpa unggahan dan tanpa API.
Pemilih Warna HEX
Pilih atau masukkan warna HEX untuk mendapatkan RGB, HSL, perkiraan CMYK, luminans relatif, serta kontras terhadap putih dan hitam.
Alat ini tersedia dalam bahasa lain
- CSS 탭 생성기 [KO]
- Trình tạo tab CSS [VI]
- CSS Tabs Generator [NL]
- CSS标签生成器 [ZH]
- CSS-Tabs-Generator [DE]
- CSS Tabs Generator [EN]
- CSS-flikgenerator [SV]
- Generator kart (tabs) CSS [PL]
- مولد علامات التبويب CSS [AR]
- ตัวสร้างแท็บส์ CSS [TH]
- Generador de Pestañas CSS [ES]
- Générateur d'onglets CSS [FR]
- Gerador de Abas CSS [PT]
- CSSタブジェネレーター [JA]
- CSS Tab Generatörü [TR]
- Generatore di schede CSS [IT]
- Генератор вкладок CSS [RU]