Co je tento nástroj?
Výchozí zaškrtávací pole prohlížeče vypadají v každém prohlížeči jinak a je těžké je přímo přestylovat, protože jejich vestavěný vzhled kreslí operační systém, ne obyčejné CSS. Standardním řešením je vizuálně skrýt nativní zaškrtávací pole a místo něj stylovat sousední element, řízený stavem :checked zaškrtávacího pole — vstup zůstává plně funkční a přístupný, mění se jen jeho vzhled.
Tento nástroj sestaví tento vzor pro tři běžné styly zaškrtávacích políček: zaoblený box s animovanou fajfkou, přepínač ve stylu iOS a vyplněný kruh (podobný přepínači). Klikněte na zaškrtávací pole v náhledu, abyste viděli zaškrtnutý stav, upravte velikost a barvu akcentu, poté zkopírujte CSS.
Zdroj: Selectors Level 4, W3C — specifikace definující pseudo-třídu :checked, na které tato technika staví.
Proč ho používat?
- Živý, klikatelný náhled — přepněte zaškrtávací pole, abyste přesně viděli, jak vypadá zaškrtnutý a nezaškrtnutý stav.
- Tři odlišné, běžně používané styly v jednom nástroji: box s fajfkou, přepínač a vyplněný kruh.
- Podkladový element zůstává skutečným <input type="checkbox">, takže navigace klávesnicí, odesílání formulářů a čtečky obrazovky fungují normálně.
- Upravitelná velikost a barva akcentu, generovaná přímo do hodnot CSS místo toho, aby zůstaly proměnnými k doplnění.
- Není potřeba žádný ikonový font, SVG soubor ani obrázek — fajfka a kolečko jsou nakresleny pomocí obyčejných CSS okrajů a pseudo-elementů.
- Zdarma, běží ve vašem prohlížeči, bez registrace.
Jak se používá
- Vyberte styl: zaoblená fajfka, přepínač nebo vyplněný kruh.
- Přetáhněte posuvník velikosti, abyste zaškrtávací pole zvětšili nebo zmenšili.
- Vyberte barvu akcentu — ta se stane barvou pozadí a okraje ve stavu zaškrtnuto.
- Klikněte na zaškrtávací pole v náhledovém panelu, abyste potvrdili, že zaškrtnutý i nezaškrtnutý stav vypadají dobře.
- Zkopírujte vygenerované CSS do stylopisu a použijte ho na libovolný <input type="checkbox"> zabalený stejným způsobem jako náhledové markup.
Příklad
Vstup
Styl: zaoblená fajfka · Velikost: 24px · Barva: oranžováVýstup
.css-checkbox .mark {
width: 24px;
height: 24px;
border: 2px solid #f97316;
border-radius: 5px;
}
.css-checkbox input:checked + .mark {
background: #f97316;
}Vstup zaškrtávacího pole je vizuálně skrytý; viditelný box je sourozenecký <span> stylovaný podle stavu :checked vstupu, s malým otočeným okrajem vykresleným jako fajfka po zaškrtnutí.
Proč skrýt nativní zaškrtávací pole místo jeho odstranění
Je lákavé přeskočit skutečný <input> a postavit zaškrtávací pole čistě ze stylovaného <div> s obslužnou funkcí kliknutí, ale tím se ztrácí podpora klávesnice, odesílání formulářů a sémantika pro čtečky obrazovky zadarmo. Vzor, který tento nástroj generuje, ponechává skutečný vstup zaškrtávacího pole v markupu — jen vizuálně skrytý pomocí opacity: 0 a přesunutý — takže ho prohlížeč pořád považuje za skutečné zaškrtávací pole ve všech ohledech, které jsou důležité, zatímco sourozenecký element řeší viditelný styling.
Tři styly na první pohled
- Zaoblená fajfka: známý vzor čtverečku s fajfkou, nejběžnější pro formulářová pole, zaškrtávací pole souhlasu a víceoborové seznamy.
- Přepínač: čte se jako okamžité nastavení zapnuto/vypnuto místo formulářového pole — nejlepší pro nastavení a obrazovky preferencí, ne pro seznamy zaškrtávacích polí.
- Vyplněný kruh: minimalistický vzhled podobný přepínacímu tlačítku, užitečný, když by čtverečkový box vizuálně příliš zatěžoval sousední zaoblené UI prvky.
Sladění se zbytkem vašeho UI
Vygenerovaná barva akcentu ovlivňuje pouze zaškrtnutý stav — vyberte cokoli, co je vaše značková nebo tlačítková barva, aby zaškrtávací pole působilo konzistentně se zbytkem stránky. Spárujte ji se stejným border-radius, který je použitý jinde v rozhraní, pro soudržnější vzhled.
Časté dotazy
Je stylizované zaškrtávací pole stále přístupné?
Ano — podkladový element je skutečný <input type="checkbox">, pouze vizuálně skrytý, ne odstraněný. Stále dostává focus, reaguje na klávesnici (mezerník pro přepnutí) a je správně oznamováno čtečkami obrazovky, protože asistivní technologie čte vstupní element, ne stylovaný span vedle něj.
Proč CSS používá sourozenecký selektor jako input:checked + .mark?
Protože viditelný box je samostatný element od skutečného vstupu zaškrtávacího pole, CSS potřebuje způsob, jak stylovat toho sourozence na základě stavu vstupu. Kombinátor + vybere element hned za zaškrtnutým vstupem, což je standardní technika pro vytváření vlastních stylů zaškrtávacích a přepínacích tlačítek bez JavaScriptu.
Můžu to použít na skutečném formuláři, ne jen v demu?
Ano — zkopírujte vygenerované CSS a zabalte skutečný vstup zaškrtávacího pole formuláře do stejné struktury markupu zobrazené v HTML/náhledu. Protože jde stále o nativní zaškrtávací pole, odesílá se s formulářem přesně jako neupravené, a funguje s existující logikou validace formulářů.
Proč je fajfka u zaobleného stylu animovaná?
Krátká animace zvětšení fajfky dělá zaškrtnutý stav působivějším a citlivějším než okamžité objevení/zmizení, což je běžný vzor v propracovaných UI zaškrtávacích políčkách. Je to malé pravidlo CSS keyframes zahrnuté ve zbytku vygenerovaného kódu.
Vyžaduje styl přepínače odlišné HTML?
Ne — všechny tři styly používají stejný podkladový markup (skrytý vstup zaškrtávacího pole plus sourozenecký element pro viditelný tvar). Přepnutí stylů v tomto nástroji mění jen CSS pravidla aplikovaná na stejnou strukturu, takže styly můžete později měnit bez zásahu do HTML.