Mis see tööriist on?
CSS lüliti on checkbox, mis on stiliseeritud nii, et see näeb välja ja käitub nagu füüsiline sisse/välja lüliti — piklik riba ringikujulise liuguriga, mis liigub ühelt poolt teisele. Kapoti all on see siiski päris checkbox-sisend, ja see on oluline: see hoiab elemendi klaviatuuriga ligipääsetavana ning kasutatavana ekraanilugejate ja vormi saatmisega, erinevalt lülitist, mis on ehitatud puhtalt klikitavatest divi-elementidest.
See tööriist ehitab selle mustri sinu eest: peidetud checkbox, riba, mis muudab värvi :checked oleku põhjal, ning liugur, mis liigub CSS transformi abil. Reguleeri liuguid ja värvivalijaid, klõpsa eelvaadet, et testida tegelikku lülituse animatsiooni, ja kopeeri nii CSS kui ka minimaalne HTML märgistus, millest see sõltub.
Allikas: WAI-ARIA Authoring Practices, W3C — soovitab tõelist checkbox-sisendit lüliti juhtelemendi ligipääsetava alusena, mistõttu selle generaatori väljund säilitab aluseks oleva sisendelemendi.
Miks seda kasutada?
- Eelvaade on päris, klikitav lüliti — mitte staatiline pilt —, nii et saad testida täpset animatsiooni enne selle kasutamist.
- Väljastab nii CSS-i kui ka ligipääsetava HTML struktuuri (checkbox-sisend + silt), millest CSS sõltub.
- Täielik kontroll riba laiuse/kõrguse, väljas-oleku värvi, sees-oleku värvi, liuguri värvi, nurkade ümarduse ja ülemineku kiiruse üle.
- Kasutab standardset checkbox + :checked selektori mustrit, nii et lüliti jääb klaviatuuriga navigeeritavaks ja töötab päris vormide sees.
- Töötab täielikult sinu brauseris — midagi, mida sa seadistad, ei laadita kuhugi üles.
- Tasuta, registreerimist pole vaja, töötab ka mobiilis.
Kuidas kasutada
- Määra laius ja kõrgus riba suuruse jaoks — liugur on automaatselt mõõdustatud, et mahtuda sisse väikese täidisega.
- Vali väljas-oleku värv riba vaikimisi (märkimata) välimuse jaoks ja sees-oleku värv, kui see on sisse lülitatud.
- Vali liuguri värv — valge või hele neutraalne toon annab tavaliselt tugevaima kontrasti riba vastu.
- Määra border radius 50%-le klassikalise piklikult ümmarguse lüliti jaoks, või vähenda seda veidi ümarama ristküliku jaoks.
- Reguleeri ülemineku kiirust, et kontrollida, kui kiiresti liugur liigub ja riba värv olekute vahel sulandub.
- Klõpsa eelvaate lülitit, et veenduda animatsiooni õigsuses, ja kopeeri seejärel CSS ja HTML oma projekti.
Näide
Sisend
Laius: 52px · Kõrgus: 28px · Väljas värv: #cbd5e1 · Sees värv: #ea580c · Raadius: 50% · Kiirus: 200msTulemus
.switch input:checked ~ .track { background-color: #ea580c; }
.switch input:checked ~ .track .thumb { transform: translateX(24px); }Mustri tuum: checkboxi :checked olek koos üldise õe-selektoriga (~) juhib nii riba taustavärvi kui ka liuguri liikumiskaugust.
Miks checkbox, mitte div klõpsu käitlejaga
On kiusatus ehitada lüliti kahest <div> elemendist ja veidi JavaScriptist, mis klõpsul klassi vahetab, kuid see lähenemine lõhub tavaliselt klaviatuurinavigatsiooni, ekraanilugeja teavitused ja vormi saatmise — päris checkbox tegeleb kõigi kolmega tasuta. Muster, mille see tööriist genereerib, hoiab <input type="checkbox"> päris interaktiivse elemendina (visuaalselt peidetud, kuid endiselt fookustatav), ja kasutab riba ja liuguri stiliseerimiseks checkboxi natiivse :checked oleku põhjal ainult puhast CSS-i — üldse ei kasutata JavaScripti.
Levinud lülituse stiilid
- Klassikaline piklik lüliti: border radius 50%, mõõdukas suurus (48–56px lai), selge värvimuutus sisse/välja vahel.
- Seadete-paneeli lüliti: väiksem suurus (36–44px lai), summutatud väljas-värv (hele hall) heleda brändivärvilise sees-oleku vastu.
- Kergelt ümar lüliti: border radius umbes 20–30% täieliku piklikkuse asemel rohkem ristkülikukujulise, äpitaolise välimuse jaoks.
- Kiire, nobe lüliti: ülemineku kiirus 100–150ms tundub kohene ja reageeriv.
- Aeglane, kaalutletud lüliti: ülemineku kiirus 300–400ms mõjub sujuvama ja viimistletumana, kasulik ühe silmapaistva seadete-lüliti jaoks.
Kombineerimine teiste CSS tööriistadega
Loodud riba ja liugur kasutavad juba kapoti all border-radius'e, seega kui soovid ruudulist või teistmoodi ümardatud varianti kaugemale, kui liugur pakub, võimaldab Border Radius generaator igat nurka eraldi täpsustada enne väärtuse kleepimist. Box Shadow generaator on kasulik liugurile õrna varju lisamiseks lisasügavuse jaoks.
Korduma kippuvad küsimused
Miks väljund sisaldab HTML-i, mitte ainult CSS-i?
Lüliti pole puhtalt visuaalne — see sõltub päris <input type="checkbox"> elemendist, mis on mähitud <label>-isse, ning riba ja liuguri elementidest, millele CSS sihib. Ilma selle täpse struktuurita pole loodud CSS-i :checked-põhistel selektoritel millegi külge kinnituda, seega kopeeritakse mõlemad osad koos.
Kas see lüliti on ligipääsetav?
Jah — kuna interaktiivne element on päris checkbox (ainult visuaalselt peidetud tehnikaga, mis hoiab seda ligipääsetavuse puus, mitte display:none abil), jääb see Tab-klahviga fookustatavaks, Tühiku või Enteriga lülitatavaks ning ekraanilugejate poolt korrektselt teavitatuks kui checkbox oma praeguses märgitud/märkimata olekus.
Kas saan seda kasutada päris HTML vormis?
Jah. Kuna aluseks olev element on standardne checkbox-sisend, saad anda sellele name ja value atribuudi ning see saadab andmed nagu iga teine checkbox — märgitud lülitid saadavad oma väärtuse, märkimata jäetakse välja, täpselt nagu tavaline checkbox.
Miks liigub liugur transform abil, mitte muutes left positsiooni?
transform: translateX() animeerimist käitleb brauseri kompositor ja see püsib sujuv ka nõrgema võimsusega seadmetel, samas kui left animeerimine käivitab layout'i ümberarvutuse igal kaadril. Loodud CSS kasutab liikumise jaoks sel põhjusel alati transform'i.
Mida nurkade ümarduse liugur tegelikult kontrollib?
See skaleerib nii riba nurkade ümardust kui ka liuguri nurkade ümardust koos, proportsionaalselt riba kõrgusega. 50% juures saad täielikult ümara pikliku kuju ringikujulise liuguriga; madalamad väärtused hoiavad kuju rohkem ristkülikukujulise, ruudulisema, äpitaolise lülitina.