Ako štýlovať zaškrtávacie políčka pomocou CSS bez použitia knižníc?
sobes.tech AI
Odpoveď od AI
Pre styling checkboxa bez knižníc môžete použiť kombináciu skrytia štandardného prvku a štýlovania pseudo-prvkov ::before alebo ::after, ktoré sú spojené s rodičovským <label>.
-
Skrytie štandardného checkboxu:
input[type="checkbox"] { display: none; /* alebo visibility: hidden; height: 0; width: 0; */ } -
Vytvorenie štýlovaného "štvorca" pomocou pseudo-prvku
<label>:input[type="checkbox"] + label::before { content: ''; /* Povinné pre zobrazenie pseudo-prvku */ display: inline-block; width: 1em; /* Veľkosť štvorca */ height: 1em; /* Veľkosť štvorca */ border: 1px solid #ccc; /* Rámček štvorca */ margin-right: 0.5em; /* Odstup od textu labelu */ vertical-align: middle; /* Vertikálne zarovnanie */ /* Iné štýly: background-color, border-radius, box-shadow */ } -
Štýl pre označený stav:
Používame selektor
checkedpreinputa zodpovedajúco meníme štýly pseudo-prvkulabel.input[type="checkbox"]:checked + label::before { background-color: #007bff; /* Farba pozadia označeného checkboxu */ border-color: #007bff; /* Farba rámčeka označeného checkboxu */ /* Iné štýly podľa potreby */ } -
Pridanie "pipy" (alebo iného indikátora):
Môžete použiť druhý pseudo-prvok (
::after) alebo štýlovať existujúci::beforepomocoubackground-image(svg, data-url) alebo štýlovaniaborder.Príklad s
borderna vytvorenie pipy:input[type="checkbox"]:checked + label::after { content: ''; display: inline-block; width: 0.4em; /* Šírka línie pipy */ height: 0.7em; /* Výška línie pipy */ border-right: 2px solid white; /* Pravá časť pipy */ border-bottom: 2px solid white; /* Dolná časť pipy */ transform: rotate(45deg); /* Otočenie na vytvorenie pipy */ position: absolute; /* Pre pozicovanie vo vnútri `::before` */ top: 0.1em; /* Úprava pozície */ left: 0.3em; /* Úprava pozície */ /* Rodičovský `label::before` môže potrebovať `position: relative;` */ }
Pre správnu funkčnosť posledného príkladu pridajte k input[type="checkbox"] + label::before position: relative;:
input[type="checkbox"] + label::before {
/* ... predchádzajúce štýly ... */
position: relative; /* Pre pozicovanie `::after` */
}
Tento prístup zabezpečuje úplnú kontrolu nad vzhľadom checkboxu a dobrú dostupnosť, pretože štandardný prvok stále existuje a reaguje na akcie používateľa (klik, fokus). Je dôležité prepojiť input s label pomocou atribútov id a for pre správnu funkčnosť pri kliknutí na text etikety.
<input type="checkbox" id="myCheckbox">
<label for="myCheckbox">Súhlasím s podmienkami</label>