Úvodná » kódovanie » Ako vytvoriť používateľské rozhranie prepínačov pomocou masky CSS

    Ako vytvoriť používateľské rozhranie prepínačov pomocou masky CSS

    Pri spracovaní obrazu, maskovanie je technika, ktorá vám umožňuje skryť obrázok s iným. Na vytvorenie časti obrazu sa používa maska vidieť skrz. Môžete vykonať maskovanie pomocou CSS pomocou maskovacích vlastností.

    V dnešnom príspevku vytvoríme maskovaný obrázok pomocou dvoch obrázkov PNG a technikami maskovania CSS a umožníme používateľom zvládnuť dva stavy obrazu (deň a nočné) pomocou rozhrania UI.

    Z dôvodu niektorých problémov s kompatibilitou prehliadača - nie všetky maskovacie vlastnosti sú podporované v každom prehliadači (k júnu 2016) - ukážem dve techniky na pridanie masiek, jeden pre prehliadače Webkit a jeden pre Firefox. Dva prvé kroky v tomto trom kroku sú rovnaké pre každý prehliadač, ale v treťom kroku bude rozdiel.

    Krok 1. Vytvorte základný prepínač

    Pretože typický prepínač má dva stavy len jeden povolené v čase, môžete použiť a skupina prepínačov dvoch na vytvorenie pracovných komponentov prepínača. Každé rádiové tlačidlo umiestnite na ľavý a pravý koniec rodičovského prvku.

    Skupiny rádiových tlačidiel sa vytvárajú tým, že každé tlačidlo prepínača je rovnaké názov atribútov. V skupine prepínačov, iba jedno prepínacie tlačidlo možno skontrolovať naraz.

    Začíname s nasledujúcimi kódmi HTML a CSS:

    HTML

    CSS

    V CSS nižšie som použil absolútne umiestnenie na umiestnenie prepínačov na obrazovke presne tam, kde chcem.

    #outerWrapper width: 450px; výška: 90px; polstrovanie: 10px; okraj: 100 pixelov auto 0 auto; okraj: 55px; box-tieň: 0 0 10px 6px #EAEBED; pozadie: #fff;  #innerWrapper výška: 100%; border-radius: 45px; overflow: hidden; Pozícia: relatívna;  .radio šírka: 90px; výška: 100%; pozície: absolútna; margin: 0; opacita: 0;  #rightRadio vpravo: 0;  .radio: nie (: začiarknuté) kurzor: ukazovateľ;  

    Pridal som Nepriehľadnosť: 0 pravidlo na .rádio triedy, aby sa skryte prepínacie tlačidlá. Posledné pravidlo v kódovom bloku nižšie, kurzor: ukazovateľ; zobrazuje kurzor ukazovateľa pre nepovolené tlačidlo prepínača, aby používatelia vedeli, na ktoré tlačidlo kliknutím prepínate stav spínača.

    Snímka obrazovky používateľského rozhrania prepínača pomocou prepínačov v prehliadači Chrome

    Krok 2. Pridajte skiny do prepínača

    V tomto kroku pridáme dve

    tagy pre obe skiny pod prepínačmi v našom súbore HTML a obrázok pozadia pre každú kožu v našom CSS.

    Používam "Deň" a "Noc" ako dva stavy prepínača, inšpirované Dribbble shot Minh Killy Le.

    Denná koža
    Nočná koža

    HTML

    CSS

    # daySkin pozadie-obrázok: url ('day.png');  #nightSkin pozadie-obrázok: url ('night.png');  .skin šírka: 100%; výška: 100%; pointer-events: žiadne; poloha: absolútna; rozpätie: 0; 

    pointer-events: žiadne; pravidlo sa pridal ku kožkám tak, aby udalosti kliknutia na prepínači mohli prejsť cez ne, a prejdite na prepínacie tlačidlá.

    Pomocou vlastností CSS ukazovateľa udalostí môžete nastaviť okolnosti, za ktorých môže byť grafický prvok zacielené na udalosti myši.

    Ako alternatívu pre vyššie uvedený kód, dva tagy (so zdrojovými obrázkami) vo vnútri

    tagy môžu tiež fungovať. Bude to kože pre dva stavy spínačov.

    Screenshot z prepínača s kožou v chrome

    Krok 3a. Pridať masku (verzia Webkit)

    Pre prehliadače Chrome a iné prehliadače založené na Webkit budem používať mask-image Vlastnosť CSS, ktorá - od písania tohto príspevku - funguje len s -WebKit v prehliadačoch Webkit. mask-image nehnuteľnosť vám umožní zadajte obrázok ktoré sa majú použiť ako maskovať.

    Vo všeobecnosti existujú dva druhy maskovania: svietivosť a alfa.

    • v maskovanie jasu, tmavá časť obrazu masky skrýva obraz, ktorý maskuje: tmavšia časť je v maskovom obraze, tým skôr je táto časť skrytá v maskovanom obraze.
    • v alfa maskovanie, priehľadná časť obrazu masky skrýva obraz, ktorý maskuje: čím je priehľadnejšia časť v maskovom obraze, tým skrytá je časť, ktorá je v maskovanom obraze.

    V prehliadači Chrome (od verzie 51.0.2704.103, Win10) sa zdá, že v súčasnosti funguje iba alfa.

    V CSS, alfa a svietivosť sú hodnoty mask-type vlastnosť.

    Tu je CSS pridá masku na obrázky na pozadí v prehliadačoch Webkit:

    CSS

    #nightSkin pozadie-obrázok: url ('night.png'); maska ​​typu: alfa; / * priehľadný kruh so zvyšnou časťou nepriehľadný * / -webkit-maska-obrázok: radiálny gradient (kruh 45px 45px, rgba (0,0,0,0) 45px, rgba (0,0,0,1) 45px) ;  / * Ak je vybraná denná koža * / #leftRadio: začiarknutá ~ # nightSkin mask-type: alpha; / * nepriehľadný kruh s zvyšnou časťou transparentný * / -webkit-maska-obrázok: radiálny gradient (kruh pri 405px 45px, rgba (0,0,0,1) 45px, rgba (0,0,0,0 45px) ; 

    Použil som -WebKit-maska-image Vlastnosť vytvoriť počiatočný obraz masky. Jeho hodnota používa radiálne gradient () Funkcia CSS, ktorá sa používa na vytvorenie obrazu z preddefinovaného tvaru, radiálneho gradientu a stredu sklonu.

    Pre nočnú kožu som vytvoril priehľadný kruh a zvyšnú časť nádoby som urobil nepriehľadný. Pre deň kože som urobil opak: vytvoril neprístupný kruh s radiálne gradient () a zvyšná časť bola transparentná.

    Aj keď v prehliadačoch Webkit ešte nie je podporovaná, pridal som mask-type majetok pre CSS pre budúce použitie.

    Snímka obrazovky prepínača s vybranou nočnou kožou
    Screenshot z prepínača s vybratou dennou kožou

    Ako vidíte vyššie, hranica kruhu nie je veľmi hladká. na skryť hrubé hrany, pridaj

    po koži v tvare kruhu (rovnakej veľkosti ako kruh masky) so škatuľkou. Tieň skryje drsné okraje kruhovej masky.

    HTML

    CSS

    #switchBtnOutline šírka: 90px; výška: 100%; border-radius: 45px; box-tieň: 0 0 2px 2px šedá vložka, 0 0 10px šedá; Ukazovateľ-events: none; pozície: absolútna; margin: 0;  / * Miesto #switchBtnOutline na pravom konci, keď je vybratá denná koža * / #leftRadio: začiarknuté ~ # switchBtnOutline vpravo: 0; 
    Screenshot z prepínača s hrubými okrajmi kruhu masky skrytý

    Krok 3b. Pridať masku (verzia Firefoxu)

    mask-image Vlastnosť CSS je vlastne dlhý majetok, a je súčasťou stenografickej vlastnosti maskovať ktorý vám umožňuje špecifikovať aj obrázok, ktorý sa má používať ako maska. zatiaľ čo mask-image v prehliadači Firefox ešte nie je podporovaná, maskovať je.

    Napriek tomu maskovať vlastnosť by mala prijať obrázok vytvorený pomocou radiálne gradient () CSS funkcia ako hodnota, rovnako ako mask-image vlastníctvo, v prehliadači Firefox zatiaľ neexistuje žiadna podpora.

    Takže namiesto a radiálne gradient () obrázok, použite obrázok SVG ako obrázok masky s typom masky svietivosť.

         

    Vyššie uvedený obrázok SVG vyzerá ako kombinácia a biely obdĺžnik a a čierny kruh. Pridať toto a ďalšie s čierny obdĺžnik a a biely kruh ako masky do HTML, ktorý sme použili vo verzii Webkit.

    Obraz SVG (biely obdĺžnik a čierny kruh pre masku)

    HTML

                 

    Nahradiť (alebo skombinovať) kód CSS pre #nightSkin sme použili vo verzii Webkit s nasledujúcim kódom. A vy ste skončili.

    Teraz máme dva rôzne maskovacie obrázky (gradient CSS a SVG), dva typy masiek (Alpha & Luminance) a podpora Webkit a Firefox.

    CSS

    #nightSkin pozadie-obrázok: url ('night.png'); typ masky: jas; mask: url (#leftSwitchMask);  #leftRadio: začiarknuté ~ # nightSkin mask-type: luminance; mask: url (#rightSwitchMask); 

    Pozrite sa na demo

    • demonštrácie
    • Stiahnuť zdroj
    © Savtec
    Užitočné informácie a tipy na vývoj webových aplikácií. Programovanie, webdesign, CSS, HTML, JAVASCRIPT. Nakonfigurujte a preinštalujte Windows. Tvorba webov a aplikácií od nuly.