CSS-Tabs-Generator
Tabs sind überall, in Einstellungsfenstern, Dokumentationsseiten, Produktgalerien. Native HTML hat kein spezielles Tab-Element, daher erstellen Entwickler ihre eigenen. Dieser Generator baut eine einfache Tab-Leiste in HTML + CSS: eine Akzentfarbe für den aktiven Tab, einen Eckenradius für die Buttons und einen Hover-Zustand. Fügen Sie das Markup in Ihr Projekt ein und verbinden Sie das Umschalten der Tabs mit Ihrem eigenen JavaScript.
So erstellen Sie Tabs
-
1
Akzentfarbe wählen
Hintergrund- und Textfarbe des aktiven Tabs. Wählen Sie eine Farbe, die zu Ihrer Marke passt.
-
2
Eckenradius festlegen
Rundet die oberen Ecken der Tab-Buttons ab. Höhere Werte wirken weicher.
-
3
Beschriftungen anpassen
Die Ausgabe enthält drei Buttons, "Overview", "Details" und "Settings": Benennen Sie sie passend zu Ihrem Inhalt um.
-
4
Code kopieren
Das Tab-Markup enthält einen eigenen <style>-Block. Fügen Sie beides in Ihre Seite ein.
-
5
Tab-Wechsel hinzufügen
Der Generator erzeugt nur den visuellen Teil. Verbinden Sie die Buttons mit Ihrem eigenen JavaScript oder Ihrer UI-Bibliothek, um die Panels ein- und auszublenden.
Korrektes barrierefreies Markup
<div class="tabs">
<div role="tablist" aria-label="Produktinfo">
<button role="tab" id="tab-1" aria-selected="true" aria-controls="panel-1" tabindex="0">Überblick</button>
<button role="tab" id="tab-2" aria-selected="false" aria-controls="panel-2" tabindex="-1">Spezifikationen</button>
<button role="tab" id="tab-3" aria-selected="false" aria-controls="panel-3" tabindex="-1">Bewertungen</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>
Kritische Attribute:
role="tablist"umschließt die Buttons.role="tab"auf jedem Button, mitaria-selectedundaria-controls.tabindexverwendet das roving tabindex pattern: nur der aktive Tab ist0, andere sind-1. Pfeiltasten bewegen den Fokus zwischen ihnen.role="tabpanel"auf jedem Panel, mitaria-labelledby, das auf seinen Tab zeigt.hiddenauf inaktiven Panels (nicht nurdisplay: none, das Attribut ist das, was AT verwendet).
Tastaturvertrag
| Taste | Aktion |
|---|---|
| Tab | In die Tabliste hinein-/herausbewegen |
| ArrowLeft | Vorheriger Tab (springt zum letzten) |
| ArrowRight | Nächster Tab (springt zum ersten) |
| Home | Erster Tab |
| End | Letzter Tab |
| Enter / Space | Fokussierten Tab aktivieren (bei manueller Aktivierung) |
Automatische Aktivierung (Tab wechselt, wenn der Fokus sich bewegt) vs. manuelle (Fokus bewegt sich, Tab aktiviert sich bei Enter), WAI-ARIA erlaubt beides. Automatisch ist einfacher für sehende Benutzer; manuell ist besser, wenn der Tab-Inhalt schwer zu rendern ist.
Unterstrichener 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;
}
Gepillter Stil
[role="tab"] {
padding: 0.5rem 0.9rem;
border-radius: 9999px;
border: 0;
background: transparent;
}
[role="tab"][aria-selected="true"] {
background: #2563eb;
color: #fff;
}
Fokus sichtbar
Zeichnen Sie immer einen Fokusring, wenn der Fokus über die Tastatur ankommt:
[role="tab"]:focus-visible {
outline: 2px solid #60a5fa;
outline-offset: 2px;
}
Das JavaScript
Ungefähr:
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();
}
Insgesamt dreißig Zeilen, null Abhängigkeiten.
Tabs vs. Akkordeons
Auf schmalen Bildschirmen werden Tab-Reihen eng. Häufiges Muster: Tabs auf Desktop, Akkordeon auf Mobilgeräten. Verwenden Sie eine Containerabfrage oder Medienabfrage, um die visuelle Behandlung zu wechseln, ohne die ARIA-Rollen zu ändern.
Häufig gestellte Fragen
Für barrierefreie Tabs, ja. Ohne role="tablist" und role="tab" behandeln Bildschirmleser die Buttons als reguläre Buttons und Benutzer verlieren die Navigationskonvention. Die Alternative ist ein einfaches <details> / <summary> Akkordeon, das eingebaute Semantik hat.
Automatisch (Tab aktiviert sich, wenn der Fokus sich bewegt) ist in Ordnung, wenn der Inhalt jedes Tabs günstig zu rendern ist. Manuell (Fokus bewegt sich, Enter aktiviert) ist besser, wenn das Wechseln der Tabs schwere Arbeiten wie das Abrufen oder Rendern eines großen Formulars auslöst.
Für inhaltstragende Tabs (Dokumentation, Produkt-Tabs), ja, verwenden Sie einen Hash (#specs) oder Abfrageparameter, damit Links zu einem bestimmten Tab verlinken können und der aktive Tab beim Neuladen bestehen bleibt. Für UI-Tabs (Einstellungsfenster) ist die URL optional.
Nur mit dem Checkbox-/Radio-Hack, der keine Pfeiltastennavigation und ARIA-Zustände hat. Für eine wirklich barrierefreie Implementierung ist der kleine JS-Schnipsel es wert. Wenn Sie serverseitige Fallbacks benötigen, verlinken Sie jeden Tab auf eine eindeutige URL und rendern Sie das entsprechende Panel serverseitig.
Verwandte Tools
ASCII-Tabelle Referenz
Vollständige ASCII-Tabelle von 0 bis 127 mit Dezimal-, Hex-, Oktal-, Binär- und numerischer HTML-Zeichenreferenz für jedes Zeichen, einschließlich Steuerzeichen wie NUL, LF und DEL.
HTML-Zeichenreferenz
Durchsuchbare Liste von HTML-Entitäten, ihren benannten und numerischen Codes sowie eine Ein-Klick-Kopie für Sonderzeichen und Symbole.
Referenz für Tastenkombinationen
Durchsuchen Sie dokumentierte Standardkürzel für VS Code, Chrome und Bash mit GNU Readline unter macOS, Windows und Linux.
Zufallsbuchstaben-Generator
Erzeugen Sie zufällige A-Z-Buchstaben. Wählen Sie Anzahl, Großschreibung, Kleinschreibung oder gemischte Schreibweise für Spiele, Aufgaben und Unterricht.
Telefonnummern prüfen
Prüfen Sie die Struktur von Telefonnummern nach Land und zeigen Sie Region, Typ sowie E.164-, internationale, nationale und RFC-3966-Formate an.
HAR-Datei-Viewer
HAR-Netzwerkaufzeichnungen lokal öffnen, Anfragen filtern, maskierte Header und Zeitwerte prüfen und bereinigte Zusammenfassungen exportieren.
Tool in anderen Sprachen verfügbar
- CSS 탭 생성기 [KO]
- Trình tạo tab CSS [VI]
- CSS Tabs Generator [NL]
- CSS标签生成器 [ZH]
- CSS Tabs Generator [EN]
- Generator Tab CSS [ID]
- 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]