Domovská » Kódování » Jak vytvořit přepínač UI pomocí CSS masky

    Jak vytvořit přepínač UI pomocí CSS masky

    Při zpracování obrazu, maskování je technika, která vám umožní skrýt obrázek s jiným. Maska slouží k vytvoření části obrázku vidět skrz. Maskování můžete provádět pomocí CSS pomocí maskovacích vlastností.

    V dnešním příspěvku vytvoříme maskovaný obraz pomocí dvou obrázků PNG a technik maskování CSS a umožníme uživatelům zpracovávat dva stavy obrázku (den a noc) pomocí přepínacího uživatelského rozhraní.

    Kvůli některým problémům s kompatibilitou prohlížečů - ne všechny vlastnosti maskování jsou podporovány v každém prohlížeči (od června 2016) - ukážu dvě techniky přidávání masek, jeden pro prohlížeče založené na Webkitu a jeden pro Firefox. Dva první kroky v tomto třístupňovém tutoriálu jsou stejné pro každý prohlížeč, ale ve třetím kroku bude rozdíl.

    Krok 1. Vytvořte základní přepínač

    Protože typický přepínač má dva stavy jen jeden povoleno najednou můžete použít a přepínač skupiny dvou vytvořit pracovní komponenty spínače. Umístěte každý přepínač na levý a pravý konec rodičovského prvku.

    Skupiny tlačítek rádia jsou vytvořeny tak, že se každému rádiovému tlačítku zobrazí stejné tlačítko název atribut. Ve skupině přepínačů, pouze jeden přepínač lze kontrolovat najednou.

    Začneme s následujícími HTML a CSS:

    HTML

    CSS

    V CSS níže jsem použil absolutní umístění pro umístění rádiových tlačítek na obrazovce přesně tam, kde chci.

    #outerWrapper width: 450px; výška: 90px; polstrování: 10px; okraj: 100px auto 0 auto; hraniční hrana: 55px; box-shadow: 0 0 10px 6px #EAEBED; pozadí: #ff;  #innerWrapper výška: 100%; hraniční hrana: 45px; přetečení: skryté; poloha: relativní;  .radio width: 90px; výška: 100%; pozice: absolutní; marže: 0; opacity: 0;  #rightRadio right: 0;  .radio: not (: checked) kurzor: ukazatel;  

    Přidal jsem opacity: 0 pravidlo .rádio třídy, aby skrýt přepínače. Poslední pravidlo v kódu kódu níže, kurzor: ukazatel; Zobrazí kurzor ukazatele pro nezaškrtnuté přepínač, takže uživatelé vědí, které tlačítko klepnutím přepíná stav přepínače.

    Snímek obrazovky uživatelského rozhraní s přepínači v prohlížeči Chrome

    Krok 2. Přidejte skiny do přepínače

    V tomto kroku přidáme dva

    tagy pro dvě skiny pod přepínači v našem HTML souboru a obrázek pozadí pro každou kůži v našem CSS.

    Používám "Day" a "Night" jako dva stavy přepínače, inspirované Dribbble shotem Minh Killy Le.

    Den kůže
    Noční kůže

    HTML

    CSS

    #daySkin background-image: url ('den.png');  #nightSkin background-image: url ('night.png');  .skin width: 100%; výška: 100%; ukazatele-události: žádné; pozice: absolutní; marže: 0; 

    ukazatele-události: žádné; pravidlo je přidáno do vzhledů tak, aby události klepnutí na přepínači mohly projít nimi, a k přepínačům.

    Pomocí vlastnosti CSS ukazatele událostí můžete nastavit okolnosti, za kterých může být grafický prvek zaměřené na události myši.

    Jako alternativa k výše uvedenému kódu, dvě tagy (se zdrojovými obrázky) uvnitř

    tagy mohou také fungovat. Budou to kůže pro dva stavy spínače.

    Screenshot přepínače se skiny v chromu

    Krok 3a. Přidat masku (verze Webkit)

    Pro prohlížeče Chrome a jiné prohlížeče založené na webu Webkit používám prohlížeče mask-image Vlastnost CSS, která - při psaní tohoto příspěvku - pracuje pouze s -webkit předpony v prohlížečích Webkit. mask-image vám umožní určete obrázek být použit jako maska.

    Obecně existují dva druhy maskování: jasu a alfa.

    • v maskování jasu, tmavá část obrazu masky skryje obraz, který maskuje: tmavší část je v obrazu masky, čím více je tato část skrytá v maskovaném obrazu.
    • v alfa maskování, průhledná část obrazu masky skryje obraz, který maskuje: čím transparentnější je část v obrazu masky, tím více je skrytá část v obrázku, který je maskován.

    V prohlížeči Chrome (ve verzi 51.0.2704.103, Win10) funguje pouze alfa.

    V CSS, alfa a jasu jsou hodnoty typ masky vlastnictví.

    Zde je CSS přidá masku na obrázky v prohlížeči Webkit:

    CSS

    #nightSkin background-image: url ('night.png'); typ masky: alfa; / * průhledný kruh se zbývající částí opaque * / -webkit-mask-image: radiální gradient (kruh při 45px 45px, rgba (0,0,0,0) 45px, rgba (0,0,0,1) 45px) ;  / * Když je vybrána možnost skin kůže * / #leftRadio: checked ~ # nightSkin typ masky: alfa; / * neprůhledný kruh se zbývající částí průhledný * / -webkit-mask-image: radiální gradient (kruh při 405px 45px, rgba (0,0,0,1) 45px, rgba (0,0,0,0) 45px) ; 

    Použil jsem -webkit-mask-image vlastnost pro vytvoření obrazu počáteční masky. Jeho hodnota používá radiální gradient () Funkce CSS, která se používá k vytvoření obrazu z předem definovaného tvaru, radiálního gradientu a středu přechodu.

    Pro noční kůži jsem vytvořil průhledný kruh a zbývající část nádoby jsem neprůhlednou. Pro dnešní pleť jsem udělal opak: vytvořil neprůhledný kruh s radiální gradient () funkce a učinila zbylou část průhlednou.

    I když to ještě není podporováno v prohlížečích Webkit, přidal jsem typ masky vlastnictví do CSS pro budoucí použití.

    Snímek obrazovky s vybranou noční kůží
    Snímek obrazovky s volbou Day skin

    Jak vidíte výše, hranice kruhu není příliš hladká. Na zakryjte hrubé hrany, přidat

    za kůží ve tvaru kruhu (stejná velikost jako kruh masky) se stínem krabice. Stín skryje hrubé hrany masky kruhu.

    HTML

    CSS

    #switchBtnOutline width: 90px; výška: 100%; hraniční hrana: 45px; box-shadow: 0 0 2px 2px šedá vložka, 0 0 10px šedá; ukazatele-události: žádné; pozice: absolutní; marže: 0;  / * Umístěte #switchBtnOutline na pravý konec, když je vybrána denní kůže * / #leftRadio: checked ~ # switchBtnOutline right: 0; 
    Snímek obrazovky s hrubým okrajem masky masky skrytý

    Krok 3b. Přidat masku (verze Firefoxu)

    mask-image Vlastnost CSS je vlastně a dlouhodobé vlastnictví, a je to součást zkratkové vlastnosti maska , který umožňuje také určit obrázek, který má být použit jako maska. Zatímco mask-image Firefox zatím není podporován, maska je.

    Ačkoliv maska vlastnost by měla přijmout obrázek vytvořený pomocí radiální gradient () Funkce CSS funguje jako hodnota, stejně jako funkce mask-image Vlastnost zatím nebyla ve Firefoxu podporována.

    Takže místo a radiální gradient () Použijme obraz SVG jako obraz masky s typem masky jasu.

         

    Obraz SVG nahoře vypadá jako kombinace a bílý obdélník a černý kruh. Přidat, a další s černý obdélník a bílý kruh jako masky na HTML, které jsme použili ve verzi Webkit.

    Obrázek SVG (bílý obdélník a černý kruh pro masku)

    HTML

                 

    Nahraďte (nebo kombinujte s) kód CSS pro #nightSkin ve verzi Webkit jsme použili následující kód. A jste hotovi.

    Nyní máme dva různé obrazy masek (CSS gradient a SVG), dva různé typy masek (Alpha & Luminance) a podporu Webkit i Firefox.

    CSS

    #nightSkin background-image: url ('night.png'); typ masky: jas; mask: url (#leftSwitchMask);  #leftRadio: checked ~ # nightSkin typ masky: jas; mask: url (#rightSwitchMask); 

    Podívejte se na demo

    • Demo
    • Stáhněte si zdroj
    © Savtec
    Užitečné informace a tipy pro vývoj webových aplikací. Programování, webdesign, CSS, HTML, JAVASCRIPT. Nakonfigurujte a znovu nainstalujte Windows. Vytváření webů a aplikací od nuly.