Čo je tento nástroj?
Predvolené zaškrtávacie políčka prehliadača vyzerajú v každom prehliadači inak a je ťažké ich priamo prestylizovať, pretože ich vstavaný vzhľad kreslí operačný systém, nie čisté CSS. Štandardným riešením je vizuálne skryť natívne políčko a namiesto toho štylizovať susedný prvok, riadený stavom :checked políčka — vstup zostáva plne funkčný a prístupný, mení sa len jeho vzhľad.
Tento nástroj zostavuje tento vzor pre tri bežné štýly zaškrtávacích políčok: zaoblený box s animovanou fajočkou, posuvný prepínač v štýle iOS a vyplnený kruh (podobný radio buttonu). Kliknutím na zaškrtávacie políčko v náhľade zobrazíte zaškrtnutý stav, upravte veľkosť a farbu a skopírujte CSS.
Zdroj: Selectors Level 4, W3C — špecifikácia definujúca pseudo-triedu :checked, na ktorej je táto technika založená.
Prečo ho používať?
- Živý, klikateľný náhľad — prepnite zaškrtávacie políčko a zistite presne, ako vyzerá zaškrtnutý aj nezaškrtnutý stav.
- Tri odlišné, bežne používané štýly v jednom nástroji: box s fajočkou, prepínač a vyplnený kruh.
- Základný prvok zostáva skutočným <input type="checkbox">, takže klávesová navigácia, odosielanie formulára a čítačky obrazovky fungujú normálne ďalej.
- Nastaviteľná veľkosť a farba, generované priamo do hodnôt CSS namiesto premenných na dodatočné vyplnenie.
- Nie je potrebný ikonový font, súbor SVG ani obrázok — fajočka a bodka prepínača sú nakreslené obyčajnými CSS okrajmi a pseudo-elementmi.
- Zadarmo, beží vo vašom prehliadači, bez registrácie.
Ako sa používa
- Vyberte štýl: zaoblená fajočka, prepínač alebo vyplnený kruh.
- Potiahnutím posuvníka veľkosti zväčšite alebo zmenšite zaškrtávacie políčko.
- Vyberte farbu — tá sa stane farbou pozadia a okraja v zaškrtnutom stave.
- Kliknite na zaškrtávacie políčko v paneli náhľadu, aby ste potvrdili, že zaškrtnutý aj nezaškrtnutý stav vyzerajú správne.
- Skopírujte vygenerované CSS do svojho štýlopisu a použite ho na akýkoľvek <input type="checkbox"> obalený rovnakým spôsobom ako náhľadové markup.
Príklad
Vstup
Štýl: zaoblená fajočka · Veľkosť: 24px · Farba: 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ávacieho políčka je vizuálne skrytý; viditeľný box je susedný <span> štylizovaný podľa stavu :checked vstupu, s malým otočeným okrajom nakresleným ako fajočka po zaškrtnutí.
Prečo skryť natívne políčko namiesto jeho odstránenia
Je lákavé preskočiť skutočný <input> a vytvoriť zaškrtávacie políčko výlučne zo štylizovaného <div> s obslužnou funkciou kliknutia, ale tým sa zadarmo stratí podpora klávesnice, odosielanie formulára a sémantika pre čítačky obrazovky. Vzor, ktorý tento nástroj generuje, ponecháva skutočný vstup zaškrtávacieho políčka v markupe — len vizuálne skrytý pomocou opacity: 0 a preumiestnený — takže prehliadač ho stále v každom dôležitom ohľade považuje za skutočné zaškrtávacie políčko, zatiaľ čo susedný prvok sa stará o viditeľnú štylizáciu.
Tri štýly v prehľade
- Zaoblená fajočka: dobre známy vzor štvorca s fajočkou, najbežnejší pre polia formulárov, súhlasy a zoznamy s viacnásobným výberom.
- Prepínač: pôsobí ako okamžité nastavenie zapnuté/vypnuté skôr než ako pole formulára — najlepší pre obrazovky s preferenciami a nastaveniami, nie pre zoznamy zaškrtávacích políčok.
- Vyplnený kruh: minimalistický vzhľad podobný radio buttonu, užitočný keď by štvorcový box pôsobil vizuálne ťažko vedľa okolitých zaoblených prvkov rozhrania.
Prispôsobenie zvyšku vášho rozhrania
Generovaná farba ovplyvňuje len zaškrtnutý stav — vyberte takú, akú má vaša značka alebo tlačidlá, aby zaškrtávacie políčko pôsobilo konzistentne so zvyškom stránky. Skombinujte ju s rovnakým border-radius, aký sa používa inde v rozhraní, pre súdržnejší vzhľad.
Časté otázky
Je štylizované zaškrtávacie políčko stále prístupné?
Áno — základným prvkom je skutočný <input type="checkbox">, len vizuálne skrytý, nie odstránený. Stále prijíma fokus, reaguje na klávesnicu (medzerník na prepnutie) a čítačky obrazovky ho správne oznamujú, keďže asistenčné technológie čítajú vstupný prvok, nie štylizovaný span vedľa neho.
Prečo CSS používa susedný selektor ako input:checked + .mark?
Keďže viditeľný box je samostatný prvok od skutočného vstupu zaškrtávacieho políčka, CSS potrebuje spôsob, ako štylizovať tohto suseda na základe stavu vstupu. Kombinátor + vyberie prvok bezprostredne nasledujúci po zaškrtnutom vstupe, čo je štandardná technika na vytváranie vlastných štýlov zaškrtávacích políčok a radio buttonov bez JavaScriptu.
Môžem toto použiť v reálnom formulári, nielen v ukážke?
Áno — skopírujte vygenerované CSS a obaľte skutočný vstup zaškrtávacieho políčka formulára do rovnakej štruktúry markupu, akú vidíte v HTML/náhľade. Keďže ide stále o natívne zaškrtávacie políčko, odosiela sa spolu s formulárom presne ako neštylizované, a funguje s existujúcou logikou validácie formulára.
Prečo je fajočka pri zaoblenom štýle animovaná?
Krátka animácia zväčšenia na fajočke robí zaškrtnutý stav zámernejším a citlivejším než okamžité zobrazenie/zmiznutie, čo je bežný vzor v prepracovaných zaškrtávacích políčkach rozhrania. Ide o malé pravidlo CSS keyframes zahrnuté v zvyšku generovaného kódu.
Vyžaduje si štýl prepínača iné HTML?
Nie — všetky tri štýly používajú rovnaký základný markup (skrytý vstup zaškrtávacieho políčka plus susedný prvok pre viditeľný tvar). Zmena štýlu v tomto nástroji mení len CSS pravidlá aplikované na tú istú štruktúru, takže neskôr môžete štýly meniť bez zásahu do HTML.