Hjemmeside » Coding » CSS3 Tutorial Opret en slank tænd / sluk-knap

    CSS3 Tutorial Opret en slank tænd / sluk-knap

    Denne artikel er en del af vores "HTML5 / CSS3 Tutorials serie" - dedikeret til at gøre dig til en bedre designer og / eller udvikler. Klik her at se flere artikler fra samme serie.

    Brug af en knap er hidtil den foretrukne måde at interagere med en elektronisk ting på; f.eks. radio, tv, musikafspiller og endda en smartphone, der har en talekommando, har stadig brug for mindst en eller to fysiske knapper.

    Desuden er i denne digitale tidsalder den knap har også udviklet sig i sin digitale form, hvilket gør den mere interaktiv, dynamisk og reel nem at lave sammenlignet med den fysiske knap.

    Så denne gang vil vi oprette en smidig og interaktiv knap, der er baseret på dette fremragende design over på Dribbble ved kun at bruge CSS.

    Nå, lad os bare komme i gang.

    HTML

    Vi vil starte knappen ved at placere følgende markering på vores HTML-dokument. Det er meget enkelt, knappen ville være baseret på et anker tag, vi har også a span ud for at oprette indikatorlyset, og så pakkes de sammen i en HTML5 afsnit tag.

     
    & # XF011;

    Sådan ser vores knap oprindeligt ud.

    Basic Styling

    I dette afsnit begynder vi at arbejde på styles.

    Vi anvender først denne mørke baggrund fra Subtle Pattern på kroppens dokument og centrerer afsnit. Så fjerner vi også prikket omrids:fokus og :aktiv link.

     krop baggrund: url ('images / micro_carbon.png');  sektion margin: 150px auto 0; bredde: 75px; højde: 95px; stilling: relativ; tekst-align: center; : aktiv,: fokus disposition: 0;  

    Brug af brugerdefineret skrifttype

    For knappens ikon bruger vi en brugerdefineret skrifttype fra Font Awesome snarere end et billede. På den måde vil ikonet let kunne stiles og skaleres gennem stilarket.

    Download skrifttypen, gem skriftfilerne (eot, woff, ttf og svg) i skrifttyper mappe, og læg derefter den følgende kode på dit stylesheet for at definere en ny skrifttypefamilie.

     @ font-face font-family: "FontAwesome"; src: url ("skrifttyper / fontawesome-webfont.eot"); src: url ("skrifttyper / fontawesome-webfont.eot? #iefix") format ('eot'), url ("skrifttyper / fontawesome-webfont.woff") format ('woff'), url ("skrifttyper / fontawesome- webfont.ttf ") format ('truetype'), url (" skrifttyper / fontawesome-webfont.svg # FontAwesome ") format ('svg'); skrifttype-vægt: normal; skrifttypestil: normal;  

    Det strøm ikon at vi har brug for denne knap er repræsenteret i Unicode nummer F011; Hvis du ser nøje på HTML-markeringen ovenfor, har vi sat dette numeriske tegn & # XF011; inden for ankeretiketten, men da vi ikke har defineret brugerdefineret font-family I knapstilen skal ikonet endnu ikke gengives korrekt.

    Yderligere læsning: Unicode og HTML: Dokumentkarakterer

    Styling knappen

    Først og fremmest skal vi definere brugerdefineret font-family for knappen.

    Vores knap vil være en cirkel, vi kan opnå cirkel effekten ved hjælp af border-radius ejendom og indstil værdien i mindst halvdelen af ​​knappens bredde.

    Siden bruger vi en skrifttype til ikonet, vi kan nemt indstille farve og tilføj tekst-skygge for ikonet i stilarket også.

    Dernæst vil vi også lave en afskåret effekt for knappen. Denne effekt er ret vanskelig. For det første skal vi søge baggrundsfarve: rgb (83,87,93); for knappens farvebase, så tilføjer vi op til fire lag af box-skygger.

     en font-familie: "FontAwesome"; farve: rgb (37,37,37); tekstskygge: 0px 1px 1px rgba (250,250,250,0,1); skrifttypestørrelse: 32pt; display: blok; stilling: relativ; tekst dekoration: ingen; baggrundsfarve: rgb (83,87,93); box-skygge: 0px 3px 0px 0px rgb (34,34,34), / * 1ste skygge * / 0px 7px 10px 0px rgb (17,17,17), / * 1nd skygge * / indsats 0px 1px 1px 0px rgba , 250, 250, .2), / * 3. Skygge * / indsæt 0px -12px 35px 0px rgba (0, 0, 0, .5); / * 4. skygge * / bredde: 70px; højde: 70px; grænse: 0; grænse-radius: 35px; tekst-align: center; linjehøjde: 79px;  

    Der er også en større cirkel udenfor knappen, og vi vil bruge :Før pseudo-element for det snarere end at tilføje ekstra markup.

     a: før indhold: ""; bredde: 80px; højde: 80px; display: blok; z-indeks: -2; position: absolut; baggrundsfarve: rgb (26,27,29); venstre: -5px; top: -2px; grænse-radius: 40px; box-skygge: 0px 1px 0px 0px rgba (250,250,250,0,1), indsæt 0px 1px 2px rgba (0, 0, 0, 0,5);  

    Yderligere læsning: CSS: før og efter pseudo-elementer (Hongkiat.com)

    Indikator lys

    Under knappen er der et lille lys for at angive Power On og Off status. Nedenfor anvender vi rødt for lysets farve, fordi strømmen i starten er OFF, tilføjer vi også box-shadow at efterligne lysets lysende virkning.

     a + span display: block; bredde: 8px; højde: 8px; baggrundsfarve: rgb (226,0,0); box-skygge: indsæt 0px 1px 0px 0px rgba (250,250,250,0,5), 0px 0px 3px 2px rgba (226,0,0,0,5); grænse-radius: 4px; klare: begge; position: absolut; bunden: 0; venstre: 42%;  

    Effekten

    På dette tidspunkt begynder vores knap at se godt ud, og vi har kun brug for at tilføje nogle effekter på den, for eksempel når knappen er 'blive' klikket på, vil vi have knappen så som den trykkes og holdes nede.

    For at opnå effekten, den første box-shadow i knappen bliver nulstillet og positionen sænkes en smule. Vi skal også justere de tre andre skyggeintensiteter lidt for at matche knapens position.

     a: aktiv boksskygge: 0px 0px 0px 0px rgb (34,34,34), / * 1ste skygge * / 0px 3px 7px 0px rgb (17,17,17), / * 2. skygge * / indsats 0px 1px 1px 0px rgba (250, 250, 250, .2), / * 3. Skygge * / indsæt 0px -10px 35px 5px rgba (0, 0, 0, .5); / * 4. skygge * / baggrundsfarve: rgb (83,87,93); top: 3px;  

    Når du har klikket på knappen, skal den forblive presset ned, og ikonet skal "skinne" for at indikere, at strømmen er tændt.

    For at opnå en sådan effekt vil vi målrette knappen ved hjælp af :mål pseudo-klasse, Skift derefter ikonets farve til hvid og tilføj en tekst-skygge med hvid farve også.

     a: target box-shadow: 0px 0px 0px 0px rgb (34,34,34), 0px 3px 7px 0px rgb (17,17,17), indsæt 0px 1px 1px 0px rgba (250, 250, 250, .2) , indsæt 0px -10px 35px 5px rgba (0, 0, 0, .5); baggrundsfarve: rgb (83,87,93); top: 3px; farve: #fff; tekstskygge: 0px 0px 3px rgb (250,250,250);  

    Yderligere læsning: Brug: mål pseudo-klasse

    Vi skal også justere box-shadow i cirklen uden for knappen, som følger.

     a: aktiv: før, a: mål: før top: -5px; baggrundsfarve: rgb (26,27,29); box-skygge: 0px 1px 0px 0px rgba (250,250,250,0,1), indsæt 0px 1px 2px rgba (0, 0, 0, 0,5);  

    Lysindikatoren vender fra standard rød til grøn farve for at understrege, at strømmen allerede er tændt.

     a: target + span box-shadow: indsæt 0px 1px 0px 0px rgba (250,250,250,0,5), 0px 0px 3px 2px rgba (135,187,83,0,5); baggrundsfarve: rgb (135.187,83);  

    Overgangseffekt

    Endelig vil vi også anvende følgende overgangseffekt for at gøre knapens effekt kørende.

    Denne uddrag nedenfor vil specifikt tilføje overgangen til farve ejendom og tekst-skygge til 350 ms i ankerelementet.

     en overgang: farve 350ms, tekstskygge 350ms; -o-overgang: farve 350ms, tekstskygge 350ms; -moz-overgang: farve 350ms, tekstskygge 350ms; -webkit-overgang: farve 350ms, tekstskygge 350ms;  

    Dette andet uddrag nedenfor vil tilføje overgangen til baggrundsfarve og box-shadow ejendom i lysindikatoren.

     a: mål + span overgang: baggrundsfarve 350ms, box-skygge 700ms; -o-overgang: baggrundsfarve 350ms, box-skygge 700ms; -moz-overgang: baggrundsfarve 350ms, box-skygge 700ms; -webkit-overgang: baggrundsfarve 350ms, box-skygge 700ms;  

    Endeligt resultat

    Vi har gennemgået alle de stilarter vi har brug for, nu kan du se det endelige resultat live samt download kildefilen fra nedenstående links.

    • Demo
    • Download kilde

    Bonus: Sådan slukkes den

    Her kommer bonussen. Hvis du har prøvet knappen fra ovenstående demo, har du bemærket, at knappen kun kan klikkes en gang, en, der skal tænde den, så hvordan slukker vi den?.

    Desværre skal vi gøre det med jQuery, men det er også meget simpelt. Nedenfor er al den jQuery-kode, vi har brug for.

     $ (dokument) .ready (funktion () $ ('# knap'). klik (funktion () $ (dette) .toggleClass ('on'););); 

    Udsnittet ovenfor vil tilføje klassen ON i ankeret, og vi brugte toggleClass funktion fra jQuery for at tilføje den. Så når #knap klikkes på, jQuery vil kontrollere om klassen ON er tilføjet eller ej: Hvis ikke, tilføjer jQuery klassen, og hvis den er blevet tilføjet, vil jQuery fjerne klassen.

    Bemærk: Glem ikke at inkludere jQuery-biblioteket.

    Nu er vi nødt til at ændre stilen lidt. Du skal blot erstatte alle de :mål pseudo-element med .på klassevælger, som følger:

     a.on box-shadow: 0px 0px 0px 0px rgb (34,34,34), 0px 3px 7px 0px rgb (17,17,17), indsæt 0px 1px 1px 0px rgba (250, 250, 250, .2) , indsæt 0px -10px 35px 5px rgba (0, 0, 0, .5); baggrundsfarve: rgb (83,87,93); top: 3px; farve: #fff; tekstskygge: 0px 0px 3px rgb (250,250,250);  a: aktiv: før, a.on: før top: -5px; baggrundsfarve: rgb (26,27,29); box-skygge: 0px 1px 0px 0px rgba (250,250,250,0,1), indsæt 0px 1px 2px rgba (0, 0, 0, 0,5);  a.on + span box-shadow: indsæt 0px 1px 0px 0px rgba (250,250,250,0,5), 0px 0px 3px 2px rgba (135,187,83,0,5); baggrundsfarve: rgb (135.187,83);  

    Endelig lad os prøve det i browseren.

    • Demo
    • Download kilde