Główna » Kodowanie » Jak utworzyć interfejs przełącznika za pomocą maski CSS

    Jak utworzyć interfejs przełącznika za pomocą maski CSS

    W przetwarzaniu obrazu, maskowanie to technika, która pozwala ukryj obraz z innym. Maska służy do tworzenia części obrazu widzieć przez. Możesz wykonać maskowanie za pomocą CSS za pomocą właściwości maskowania.

    W dzisiejszym poście stworzymy zamaskowany obraz, używając dwóch obrazów PNG i technik maskowania CSS, i pozwolimy użytkownikom obsługiwać dwa stany obrazu (dzień i noc) za pomocą przełącznika interfejsu użytkownika.

    Z powodu pewnych problemów ze zgodnością przeglądarki - nie wszystkie właściwości maskowania są obsługiwane w każdej przeglądarce (stan na czerwiec 2016 r.) - pokażę dwie techniki dodawania masek, jeden dla przeglądarek opartych na Webkit i jeden dla Firefoksa. Dwa pierwsze kroki w tym trzystopniowym samouczku są takie same dla każdej przeglądarki, ale w trzecim kroku będzie różnica.

    Krok 1. Utwórz podstawowy przełącznik

    Ponieważ typowy przełącznik ma dwa stany tylko jeden włączone na raz możesz użyć a grupa przycisków opcji dwóch stworzyć działające komponenty przełącznika. Umieść każdy przycisk radiowy na lewym i prawym końcu elementu macierzystego.

    Grupy przycisków radiowych są tworzone, gdy każdy przycisk radiowy jest taki sam imię atrybut. W grupie przycisków opcji, tylko jeden przycisk radiowy można sprawdzać na raz.

    Zaczynamy od następującego kodu HTML i CSS:

    HTML

    CSS

    W poniższym CSS użyłem pozycjonowania bezwzględnego, aby umieścić przyciski radiowe na ekranie dokładnie tam, gdzie chcę.

    #outerWrapper szerokość: 450px; wysokość: 90px; padding: 10px; margin: 100px auto 0 auto; granica-promień: 55px; box-shadow: 0 0 10px 6px #EAEBED; background: #fff;  #innerWrapper wysokość: 100%; granica-promień: 45px; przepełnienie: ukryte; pozycja: względna;  .radio width: 90px; wysokość: 100%; pozycja: absolutna; margines: 0; krycie: 0;  #rightRadio right: 0;  .radio: not (: checked) cursor: pointer;  

    Dodałem krycie: 0 reguła do .radio klasa w celu ukryj przyciski radiowe. Ostatnia reguła w bloku kodu poniżej, cursor: pointer; pokazuje kursor wskaźnika dla niezaznaczonego przycisku opcji, dzięki czemu użytkownicy wiedzą, który przycisk kliknąć, aby przełączyć stan przełącznika.

    Zrzut ekranu interfejsu użytkownika przełącznika z przyciskami radiowymi w przeglądarce Chrome

    Krok 2. Dodaj skórki do Switcha

    W tym kroku dodamy dwa

    znaczniki dla dwóch skór poniżej przycisków opcji w naszym pliku HTML oraz obraz tła dla każdej skóry w naszym CSS.

    Używam „Day” i „Night” jako dwóch stanów przełącznika, zainspirowanych strzałem Dribbble Minha Killy Le.

    Skóra dnia
    Nocna skóra

    HTML

    CSS

    #daySkin background-image: url ('day.png');  #nightSkin background-image: url ('night.png');  .skin szerokość: 100%; wysokość: 100%; zdarzenia-wskaźniki: brak; pozycja: absolutna; margines: 0; 

    The zdarzenia-wskaźniki: brak; reguła jest dodawana do karnacji, dzięki czemu zdarzenia kliknięcia na przełączniku mogą przejść przez nich, i dotrzeć do przycisków radiowych.

    Za pomocą właściwości CSS wskaźnika-wydarzenia można ustawić okoliczności, w których może być element graficzny celowane przez zdarzenia myszy.

    Jako alternatywę dla powyższego kodu, dwa tagi (z obrazami źródłowymi) wewnątrz

    tagi mogą również działać. Będą skórki dla dwóch stanów przełączania.

    Zrzut ekranu przełącznika ze skórkami w chromie

    Krok 3a. Dodaj maskę (wersja Webkit)

    W Chrome i innych przeglądarkach opartych na Webkitach użyję obraz maski Właściwość CSS, która - podczas pisania tego posta - działa tylko z -webkit prefiks w przeglądarkach Webkit. The obraz maski właściwość pozwala określ obraz być używana jak maska.

    Ogólnie istnieją dwa rodzaje maskowania: luminancja i alfa.

    • W maskowanie luminancji, ciemna część obrazu maski ukrywa obraz, który jest maskowany: im ciemniejsza część znajduje się w obrazie maski, tym bardziej ukryta jest ta część w maskowanym obrazie.
    • W maskowanie alfa, przezroczysta część obrazu maski ukrywa obraz, który jest maskowany: im bardziej przezroczysta część znajduje się na obrazie maski, tym bardziej ukryta jest ta część na maskowanym obrazie.

    W Chrome (od wersji 51.0.2704.103, Win10) tylko alfa wydaje się działać.

    W CSS, alfa i luminancja są wartościami typ maski własność.

    Oto CSS dodaje maskę do obrazów tła w przeglądarkach Webkit:

    CSS

    #nightSkin background-image: url ('night.png'); typ maski: alfa; / * przezroczysty okrąg z pozostałą częścią nieprzezroczysty * / -webkit-maska-obraz: radial-gradient (okrąg z 45px 45px, rgba (0,0,0,0) 45px, rgba (0,0,0,1) 45px) ;  / * Gdy wybrano karnację dnia * / #leftRadio: checked ~ # nightSkin mask-type: alpha; / * nieprzezroczysty okrąg z pozostałą częścią przezroczysty * / -webkit-maska-obraz: radial-gradient (okrąg na 405px 45px, rgba (0,0,0,1) 45px, rgba (0,0,0,0) 45px) ; 

    Użyłem -obraz-maska-webkit właściwość do utworzenia początkowego obrazu maski. Jego wartość używa radial-gradient () Funkcja CSS używana do tworzenia obrazu z wcześniej zdefiniowanego kształtu, gradientu radialnego i środka gradientu.

    W przypadku skóry nocnej stworzyłem przezroczysty okrąg, a pozostałą część pojemnika zrobiłem nieprzezroczystą. Dla skóry dziennej zrobiłem przeciwnie: stworzyłem nieprzezroczysty krąg za pomocą radial-gradient () funkcja i sprawiła, że ​​pozostała część była przezroczysta.

    Chociaż nie jest jeszcze obsługiwany w przeglądarkach Webkit, dodałem typ maski właściwość do CSS w przyszłości.

    Zrzut ekranu przełącznika z wybraną skórą nocną
    Zrzut ekranu przełącznika z wybraną skórą dzienną

    Jak widać powyżej, granica okręgu nie jest bardzo gładka. Do ukryj nierówne krawędzie, dodać

    za skórkami w kształcie koła (taki sam rozmiar jak krąg maski) z cieniem pudełka. Cień ukryje szorstkie krawędzie maski okręgu.

    HTML

    CSS

    #switchBtnOutline width: 90px; wysokość: 100%; granica-promień: 45px; box-shadow: 0 0 2px 2px szary wstawka, 0 0 10px szary; zdarzenia-wskaźniki: brak; pozycja: absolutna; margines: 0;  / * Miejsce #switchBtnOutline po prawej stronie, gdy wybrana jest skóra dzienna * / #leftRadio: checked ~ # switchBtnOutline right: 0; 
    Zrzut ekranu przełącznika z ukrytymi nierównymi krawędziami okręgu maski

    Krok 3b. Dodaj maskę (wersja Firefox)

    The obraz maski Właściwość CSS jest w rzeczywistości a własność longhand, i jest częścią stenograficznej własności maska to pozwala określić obraz, który ma być również używany jako maska. Podczas obraz maski nie jest jeszcze obsługiwany w Firefoksie, maska jest.

    Chociaż maska właściwość powinna zaakceptować obraz utworzony za pomocą radial-gradient () CSS działa jako wartość, podobnie jak obraz maski nie, nie ma jeszcze wsparcia w Firefoksie.

    Więc zamiast a radial-gradient () obraz, użyjmy obrazu SVG jako obrazu maski z typem maski luminancja.

         

    Powyższy obraz SVG wygląda jak połączenie a biały prostokąt i a czarne kółko. Dodaj to i jeszcze jedno z czarny prostokąt i a białe kółko jako maski do kodu HTML, którego używaliśmy w wersji Webkit.

    Obraz SVG (biały prostokąt i czarne kółko dla maski)

    HTML

                 

    Zastąp (lub połącz) kod CSS #nightSkin użyliśmy w wersji Webkit z następującym kodem. I jesteś skończony.

    Mamy teraz dwa różne obrazy maski (gradient CSS i SVG), dwa różne typy masek (Alpha i Luminance) oraz obsługę Webkit i Firefox.

    CSS

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

    Sprawdź demo

    • Próbny
    • Pobierz źródło
    © Savtec
    Przydatne informacje i wskazówki dotyczące tworzenia stron internetowych. Programowanie, projektowanie stron internetowych, CSS, HTML, JAVASCRIPT. Skonfiguruj i zainstaluj ponownie WINDOWS. Tworzenie witryn i aplikacji od podstaw.