Hemsida » Kodning » Så här skapar du ett gränssnittskort med hjälp av CSS Mask

    Så här skapar du ett gränssnittskort med hjälp av CSS Mask

    Vid bildbehandling, maskering är en teknik som tillåter dig att gömma en bild med en annan. En mask används för att göra en del av en bild se igenom. Du kan utföra maskering med hjälp av CSS med hjälp av maskeringsegenskaper.

    I dagens inlägg skapar vi en maskerad bild med hjälp av två PNG-bilder och CSS-maskeringstekniker och tillåter användare att hantera de två tillstånden i bilden (dag och natt) med hjälp av en omkopplare UI.

    På grund av vissa problem med webbläsarkompatibilitet - inte alla maskeringsegenskaper stöds i varje webbläsare (från och med juni 2016) - jag kommer att visa två tekniker för att lägga till masker, en för webbkitbaserade webbläsare och en för Firefox. De två första stegen i denna trestegs handledning är desamma för varje webbläsare, men det kommer att vara en skillnad i det tredje steget.

    Steg 1. Skapa en grundläggande omkopplare

    Eftersom en typisk växel har två tillstånd med bara en aktiverad i taget kan du använda en radioknapp grupp av två för att skapa växlarens arbetskomponenter. Placera varje radioknapp i vänster och höger ände av deras moderelement.

    Radionknappsgrupper skapas genom att ge varje radioknapp samma namn attribut. I en radioknappgrupp, bara en radioknapp kan kontrolleras i taget.

    Vi börjar med följande HTML och CSS:

    html

    CSS

    I CSS nedan använde jag absolut positionering för att placera radioknapparna på skärmen exakt var jag vill.

    #outerWrapper width: 450px; höjd: 90px; vaddering: 10px; marginal: 100px auto 0 auto; gränsstråle: 55px; boxskugga: 0 0 10px 6px #EAEBED; bakgrund: #fff;  #innerWrapper höjd: 100%; border-radius: 45px; overflow: hidden; positioner: relativ;  .radio bredd: 90px; höjd: 100%; position: absolute; marginal: 0; opacitet: 0;  #rightRadio höger: 0;  .radio: inte (: markerad) markör: pekare;  

    Jag lade till opacitet: 0 regera till .radio klass för att gömma radioknapparna. Den sista regeln i kodblocket nedan, markör: pekare; visar pekarkursen för den ej markerade alternativknappen, så att användarna vet vilken knapp som ska klicka för att växla omkopplingstillståndet.

    Skärmdump av switch-gränssnittet med radioknappar i Chrome-webbläsaren

    Steg 2. Lägg skinn på strömbrytaren

    I detta steg lägger vi till två

    taggar för de två skikten under radioknapparna i vår HTML-fil och en bakgrundsbild till varje hud i vår CSS.

    Jag använder "Day" och "Night" som de två staterna i byten, inspirerad av ett dribbble-skott av Minh Killy Le.

    Day Skin
    Night Skin

    html

    CSS

    #daySkin background-image: url ('day.png');  #nightSkin background-image: url ('night.png'); . skin bredd: 100%; höjd: 100%; pekare-händelser: ingen; position: absolut; marginal: 0; 

    De pekare-händelser: ingen; regel läggs till skinnen så att klickhändelserna på växeln kan passera genom dem, och nå radioknapparna.

    Med CSS-egenskapen för pekarehändelser kan du ange omständigheter under vilka ett grafiskt element kan vara riktade mot mushändelser.

    Som ett alternativ för koden ovan, två taggar (med källbilder) inuti

    Taggar kan också fungera. De kommer att vara skinn för de två växelstillstånden.

    Skärmdump av omkopplare med skinn i krom

    Steg 3a. Lägg till mask (webbkitversion)

    För Chrome och andra Webkit-baserade webbläsare använder jag mask-bild CSS egendom, som - som av skrivandet av denna post - fungerar bara med -webkit prefix i webkit webbläsare. De mask-bild egendom låter dig ange bilden att användas som den mask.

    I allmänhet finns det två typer av maskering: luminans och alfa.

    • I luminansmaskering, Den mörka delen av maskbilden döljer bilden den maskerar: desto mörkare är en del i maskbilden, ju mer dold den delen är i bilden som maskeras.
    • I alfaskärmning, Den genomskinliga delen av maskbilden döljer bilden den maskerar: Ju mer transparent en del finns i maskbilden, ju mer dold den delen är i bilden som maskeras.

    I Chrome (enligt version 51.0.2704.103, Win10) verkar bara alpha fungera för närvarande.

    I CSS, alfa och luminans är värdena för mask-typ fast egendom.

    Här är CSS som lägger till en mask till bakgrundsbilder i Webkit-webbläsare:

    CSS

    #nightSkin background-image: url ('night.png'); mask-typ: alfa; / * transparent cirkel med den återstående delen ogenomskinlig * / -webkit-mask-bild: radialgradient (cirkel vid 45px 45px, rgba (0,0,0,0) 45px, rgba (0,0,0,1) 45px) ;  / * När dagens hud valts * / #leftRadio: checked ~ # nightSkin mask-type: alpha; / * ogenomskinlig cirkel med återstående del transparent * / -webkit-mask-bild: radialgradient (cirkel vid 405px 45px, rgba (0,0,0,1) 45px, rgba (0,0,0,0) 45px) ; 

    Jag använde -webkit-mask-image egenskap för att skapa den ursprungliga maskbilden. Dess värde använder radial-gradient () CSS-funktionen som används för att skapa en bild från en fördefinierad form, en radiell gradient och mittpunkten för gradienten.

    För nattskinnet skapade jag en genomskinlig cirkel, och jag gjorde den återstående delen av behållaren ogenomskinlig. För dagens hud gjorde jag motsatsen: skapade en ogenomskinlig cirkel med radial-gradient () funktionen och gjorde den återstående delen transparent.

    Även om det ännu inte stöds i Webkit-webbläsare, lade jag till mask-typ egendom till CSS för framtida referens.

    Skärmdump av omkopplare med Natt hud vald
    Skärmdump av omkopplare med vald dagskinn

    Som du kan se ovan är gränsen för cirkeln inte så jämn. Till gömma grova kanterna, Lägg till en

    efter skinn i form av en cirkel (samma storlek som maskcirkeln) med en boxskugga. Skuggan kommer att gömma cirkelmaskens grova kanter.

    html

    CSS

    #switchBtnOutline bredd: 90px; höjd: 100%; border-radius: 45px; boxskugga: 0 0 2px 2px gråinsats, 0 0 10px grå; Pekaren-händelser: none; position: absolute; marginal: 0;  / * Placera #switchBtnOutline i den högra änden när dagskinn väljs * / #leftRadio: checked ~ # switchBtnOutline höger: 0; 
    Skärmdump av omkopplare med maskcirkelens grova kanter dolda

    Steg 3b. Lägg till mask (Firefox-version)

    De mask-bild CSS-egendom är faktiskt en longhand egendom, och det är en del av shorthandegenskapen mask som låter dig ange bilden som ska användas som mask. Medan mask-bild stöds inte i Firefox ännu, mask är.

    Även om mask egendom bör acceptera en bild som skapats med radial-gradient () CSS funktion som ett värde, precis som mask-bild egenskapen gjorde det, det finns inget stöd för det i Firefox än.

    Så istället för a radial-gradient () bild, låt oss använda en SVG-bild som maskbilden med masktypen luminans.

         

    SVG-bilden ovan ser ut som en kombination av a vit rektangel och a svart cirkel. Lägg till det här och en annan med en svart rektangel och a vit cirkel som maskerar till HTML som vi använde i Webkit-versionen.

    SVG-bild (vit rektangel och svart cirkel för masken)

    html

                 

    Ersätt (eller kombinera med) CSS-koden för #nightSkin Vi använde i Webkit-versionen med följande kod. Och du är klar.

    Vi har nu två olika maskbilder (CSS gradient & SVG), två olika masktyper (Alpha & Luminance), och både Webkit och Firefox-support.

    CSS

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

    Kolla in demoen

    • demo
    • Hämta källa
    © Savtec
    Användbar information och tips om webbutveckling. Programmering, webbdesign, CSS, HTML, JAVASCRIPT. Konfigurera och installera om WINDOWS. Skapa webbplatser och applikationer från början.