Mindannyian ismerjük a HTML jelölőnégyzeteket és választógombokat. A leginkább frusztráló dolog az, hogy nincs mód a kinézetük megváltoztatására. Az operációs rendszertől és a böngészőtől függően eltérő módon néznek ki, és a CSS használatával sem tudjuk őket megváltoztatni.
Ez bosszantó lehet a legtöbb tervező számára, akik szeretnék ezeket az elemeket széppé tenni, hogy ne rontsák el a dizájnt. Ebben a bemutatóban megmutatom neked, hogyan lehet őket vonzóvá tenni egy egyszerű trükkel. Lássunk hozzá!
Légy erős. Rejtsd el jelölőnégyzeteidet!
Ez ellentmondásosnak tűnhet, de ahhoz, hogy a jelölőnégyzetek és a választógombok jól nézzenek ki, el kell azokat rejteni és elfelejteni! Ehhez egy egyszerű szabályt alkalmazunk:
.section input[type="radio"], .section input[type="checkbox"]{ display: none; }
De, Matthew, mondhatnád. Mégis mihez fogunk kezdeni nélkülük? Nyugi, nem kell aggódnod.
Megépítjük a saját jelölőnégyzeteinket. Lássunk is hozzá.
Választógombok
Először is, itt a mark-up:
<section id="first" class="section"> <div class="container"> <input type="radio" name="group1" id="radio-1"> <label for="radio-1"><span class="radio">Coffee</span></label> </div> <div class="container"> <input type="radio" name="group1" id="radio-2"> <label for="radio-2"><span class="radio">Tea</span></label> </div> <div class="container"> <input type="radio" name="group1" id="radio-3"> <label for="radio-3"><span class="radio">Cappuccino</span></label> </div> </section>
Van egy részünk, ahol három választógombot fogunk magába foglalni. A bemutatóban további jelölőnégyzeteket mutatunk, az elv ugyanaz. Minden bevitelt egy konténerosztályba tartozó div-ba csomagolják. Mindegyik bemenetnek van egy címkéje is, amelyben van egy span.
Fontos!
Mivel a választógombokat ::előtte és ::utána pszeudo elemekkel kívánjuk elkészíteni, anyaelemre van szükségünk, amely alapján elhelyezhető. Ebben az esetben ez lesz a mi címkénk:
.container label { position: relative; } Itt van egy sor stílus, amely meg van osztva a jelölőnégyzetek és a választógombok között.
.container span::before, .container span::after { content: ''; position: absolute; top: 0; bottom: 0; margin: auto; }
A felső és az alsó tulajdonságok nullára állítva, és a margóval kombinálva: auto; lehetővé teszik, hogy elemeinknek középpontba állított vízszintes helyzetük legyen.
Így néz ki a többi stílus:
.container span.radio:hover { cursor: pointer; } .container span.radio::before { left: -52px; width: 45px; height: 25px; background-color: #A8AAC1; border-radius: 50px; } .container span.radio::after { left: -49px; width: 17px; height: 17px; border-radius: 10px; background-color: #6C788A; transition: left .25s, background-color .25s; } input[type="radio"]:checked + label span.radio::after { left: -27px; background-color: #EBFF43; }
A legfontosabb rész az utolsó szabálycsomag, amely lényegében kiteszi az egész trükköt. Az ellenőrzött pszeudo osztály lehetővé teszi az elemek módosítását, amikor a bevitelt ellenőrzik. A "+" szelektor segítségével kiválaszthatjuk a következő testvérelemet, és megcélozhatjuk span.radio-nkat, ahol új szabályokat alkalmazunk az :: after pseudo elemre. Ebben az esetben vízszintes helyzetét és színét változtatjuk.
Annak érdekében, hogy a kapcsoló sima legyen, 0,25 másodperces átmenetet rendelünk hozzá a bal oldali tulajdonsághoz és a háttérszínhez. Most, amikor rákattintunk a választógombra, a kapcsoló simán mozog ahelyett, hogy gyorsan ugorna.
Jelölőnégyzetek
Ha szeretnél létrehozni néhány jelölőnégyzetet, a módszer ugyanaz. Tekintsd meg a stílusokat:
.container span.checkbox::before { width: 27px; height: 27px; background-color: #fff; left: -35px; box-sizing: border-box; border: 3px solid transparent; transition: border-color .2s; } .container span.checkbox:hover::before { border: 3px solid #F0FF76; } .container span.checkbox::after { content: '\f00c'; font-family: 'FontAwesome'; left: -31px; top: 2px; color: transparent; transition: color .2s; } input[type="checkbox"]:checked + label span.checkbox::after { color: #62AFFF; }
Az egyetlen különbség az, hogy a FontAwesome családból használunk ikont, mint :: after pseudo elem. Alapértelmezés szerint átlátszó, de amikor bejelöli a jelölőnégyzetet, az ikon kékre vált.
Azonban
Ha a pszeudo elemedben FontAwesome ikont szeretnél használni, be kell vinned a kódját a tartalom tulajdonságba, és meg kell adnod a font-family tulajdonságot FontAwesome-ként. Például:
{ content: '\f00c'; font-family: 'FontAwesome'; }
Az f00c kódot egy backslash előzi meg, amely az unicode karakter elkerüléséhez szükséges. Az unicode megtalálható a kiválasztott ikon oldalán:
Eredmény
Ez az. Most létrehoztunk egy teljesen funkcionális és gyönyörű jelölőnégyzetet és választógombokat, amelyeket beilleszthetsz és használhatsz saját projektjeidhez. A teljes forráskód megtekinthető a CodePen demóban:
See the Pen Radio buttons and check boxes 2 by Matthew Cain (@matthewcain) on CodePen.
Ha hasznosnak találtad ezt az oktatóanyagot, vagy bármilyen kérdésed van, oszd meg velünk gondolataidat alul a megjegyzésekben. Köszi!
A bejegyzés angol verzióját itt találod: How To Make Stylish Checkboxes And Radio Buttons With CSS3