CSS-flikgenerator
Flikar finns överallt – i inställningsfönster, på dokumentationswebbplatser och i produktgallerier. Inbyggd HTML saknar ett särskilt flikelement, så utvecklare bygger egna. Denna generator skapar ett enkelt flikfält i HTML + CSS: en accentfärg för den aktiva fliken, en hörnradie för knapparna och ett hover-tillstånd. Klistra in markeringen i ditt projekt och koppla flikbytet till din egen JavaScript.
Så bygger du flikar
-
1
Välj en accentfärg
Bakgrunds- och textfärg för den aktiva fliken. Välj en färg som passar ditt varumärke.
-
2
Ställ in hörnradien
Rundar av knapparnas övre hörn. Högre värden ger ett mjukare utseende.
-
3
Redigera etiketterna
Resultatet innehåller tre knappar, "Overview", "Details" och "Settings": byt namn så att de passar ditt innehåll.
-
4
Kopiera koden
Flikmarkeringen levereras med ett eget <style>-block. Klistra in båda på din sida.
-
5
Lägg till flikbyte
Generatorn producerar bara den visuella delen. Koppla knapparna till din egen JavaScript eller ditt UI-bibliotek för att visa och dölja panelerna.
Korrekt tillgänglig markup
<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>
Kritiska egenskaper:
role="tablist"omsluter knapparna.role="tab"på varje knapp, tillsammans medaria-selectedocharia-controls.tabindexanvänder roving tabindex-mönstret: endast den aktiva fliken är0, de övriga är-1. Pilknapparna flyttar fokus mellan dem.role="tabpanel"på varje panel, däraria-labelledbypekar på dess flik.hiddenpå inaktiva paneler (inte endastdisplay: none– detta är det attribut som AT använder).
Tangentbordskontrakt
| Tangent | Åtgärd |
|---|---|
| Tab | In i / ut ur fliklistan |
| ArrowLeft | Föregående flik (går runt till den sista) |
| ArrowRight | Nästa flik (går runt till den första) |
| Home | Första fliken |
| End | Sista fliken |
| Enter / Space | Aktivera den fokuserade fliken (vid manuell aktivering) |
Automatisk aktivering (flik skiftas när fokus flyttas) jämfört med manuell (fokus flyttas och flik aktiveras vid tryck på Enter) – WAI-ARIA tillåter båda alternativen. Den automatiska metoden är enklare för användare utan synbesvär; den manuella är bättre när innehållet i fliken är omfattande att visa.
Understruken 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;
}
Pillformad stil
[role="tab"] {
padding: 0.5rem 0.9rem;
border-radius: 9999px;
border: 0;
background: transparent;
}
[role="tab"][aria-selected="true"] {
background: #2563eb;
color: #fff;
}
Synligt fokus
Rita alltid en fokusring när fokus kommer via tangentbordet:
[role="tab"]:focus-visible {
outline: 2px solid #60a5fa;
outline-offset: 2px;
}
JavaScript
ungefär:
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();
}
Trettio rader totalt, inga beroenden.
Flikar vs. dragspel
På smala skärmar blir flikraderna trånga. Vanligt mönster: flikar på datorn, dragspel (accordion) på mobilen. Använd en container query eller media query för att ändra den visuella presentationen utan att ändra ARIA-rollerna.
Vanliga frågor
För tillgängliga flikar: ja. Utan role="tablist" och role="tab" behandlar skärmläsare knapparna som vanliga knappar, och användarna förlorar den vanliga navigeringskonventionen. Alternativet är ett enkelt <details> / <summary>-dragspel med inbyggd semantik.
Automatiskt (fliken aktiveras när fokus flyttas) fungerar bra när innehållet i varje flik är lätt att rendera. Manuellt (fokus flyttas och Enter aktiverar) är bättre när ett flikbyte utlöser tungt arbete, till exempel hämtning eller rendering av ett stort formulär.
För innehållsbärande flikar (dokumentation, produktflikar): ja – använd en hash (#specs) eller en frågeparameter så att länkar kan djuplänka till en specifik flik och den aktiva fliken bevaras mellan omladdningar. För UI-flikar (inställningsfönster) är URL:en valfri.
Endast med kryssrute-/radioknappstricket, som saknar navigering med piltangenter och ARIA-tillstånd. För en verkligt tillgänglig implementering är den lilla JS-snutten värd det. Om du behöver serverrenderade reservlösningar kopplar du varje flik till en unik URL och renderar motsvarande panel på serversidan.
Relaterade verktyg
ASCII-tabellreferens
Full ASCII-tabell från 0 till 127 med decimal-, hex-, oktal- och binärvärden samt notation för numeriska HTML-referenser, inklusive NUL, LF och DEL.
HTML-teckenreferens
En sökbar lista över HTML-entiteter med deras namngivna och numeriska koder samt kopiering med ett klick för specialtecken och symboler.
Referens för kortkommandon
Sök dokumenterade standardkommandon för VS Code, Chrome och Bash med GNU Readline i macOS, Windows och Linux.
Färgpalettgenerator
Skapa monokromatiska, analoga, komplementära, triadiska eller tetradiska färgpaletter från en HEX-basfärg och exportera kopieringsklara CSS-variabler.
Slumpgenerator för bokstäver
Generera slumpade A-Z-bokstäver. Välj antal, versaler, gemener eller blandat läge och använd resultatet för spel, uppgifter eller klassrumsaktiviteter.
HTML-formaterare
Formatera HTML lokalt i webbläsaren med indrag på två eller fyra blanksteg. HTML laddas inte upp eller valideras.
Verktyget finns på andra språk
- CSS 탭 생성기 [KO]
- Trình tạo tab CSS [VI]
- CSS Tabs Generator [NL]
- CSS标签生成器 [ZH]
- CSS-Tabs-Generator [DE]
- CSS Tabs Generator [EN]
- Generator Tab CSS [ID]
- 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]