Hvordan lage et vakkert ikon med CSS3

I dag vil jeg gjerne vise deg et pent trick. Vi lager et dokumentikon med ren CSS3. Enda bedre, denne effekten vil bare kreve et enkelt HTML-element.


Spillplanen

  1. Lag en firkantet boks
  2. Rund om kantene
  3. Bruk pseudoelementer til å lage et krøllet hjørne
  4. Lag illusjonen av tekst med en stripet gradient

La oss komme i gang!


Trinn 1: Opprett en boks

Vi begynner med å legge til vårt enkelt HTML-element: en ankermerke. Dette gir mening fordi de fleste ikoner også tjener til å være lenker.

 Dokumentikon

La oss stille de noe vilkårlig dimensjonene for vårt ikon. Vi skal gjøre 40x56px - bare for denne demoen. I en ekte verden applikasjon, vil du sannsynligvis ønske å redusere dette! Vær også oppmerksom på at vi må legge til skjerm: blokk, siden alle ankerkoder er inline, som standard.

 .docIcon bakgrunn: #eee; bakgrunn: lineær gradient (topp, #ddd 0, #eee 15%, #fff 40%, #fff 70%, #eee 100%); grense: 1px solid #ccc; display: block; bredde: 40px; høyde: 56px; stilling: i forhold; margin: 42px auto; 

Vær oppmerksom på at vi, ovenfor, setter inn en posisjonskontekst for å kunne arbeide med pseudoelementer innen kort tid. Du finner at jeg bare har brukt den offisielle CSS3-syntaksen for gradienten. Du vil sannsynligvis også bruke de forskjellige nettleserprefiksene. For å øke hastigheten, kan du bruke Prefixr.com eller API-en i din favorittkodeditor. Kopier bare kodestykket over, lim det inn i Prefixrs tekstområde, og klikk på enter. Det vil da spytte ut alle de forskjellige prefikserte egenskapene, slik som:

 .docIcon bakgrunn: #eee; bakgrunn: -webkit-lineær gradient (topp, #ddd 0, #eee 15%, #fff 40%, #fff 70%, #eee 100%); bakgrunn: -moz-lineær gradient (topp, #ddd 0, #eee 15%, #fff 40%, #fff 70%, #eee 100%); Bakgrunn: -O-lineær gradient (topp, #ddd 0, #eee 15%, #fff 40%, #fff 70%, #eee 100%); bakgrunn: -ms-lineær gradient (topp, #ddd 0, #eee 15%, #fff 40%, #fff 70%, #eee 100%); bakgrunn: lineær gradient (topp, #ddd 0, #eee 15%, #fff 40%, #fff 70%, #eee 100%); grense: 1px solid #ccc; skjerm: blokk; bredde: 40px; høyde: 56px; stilling: relativ; margin: 42px auto; 

Deretter la vi legge til litt glans ved hjelp av CSS-bokseskygger. Jeg har også brukt text-indent eiendom for å skjule teksten.

 .docIcon ? -webkit-boks-skygge: innsett rgba (255,255,255,0,8) 0 1px 1px; -moz-boks-skygge: innsett rgba (255,255,255,0,8) 0 1px 1px; boks-skygge: innsett rgba (255,255,255,0,8) 0 1px 1px; text-indent: -9999em; 

Så langt har vi:


Trinn 2: Avrundede hjørner

Deretter må vi lage en avrundet hjørneeffekt. Legg til følgende:

 .docIcon ? -webkit-grense-radius: 3px 15px 3px 3px; -moz-grense-radius: 3px 15px 3px 3px; border-radius: 3px 15px 3px 3px; 

Ved å overføre fire verdier kan vi angi topp, høyre, bunn og venstre radi, tilsvarende. Dette ligner måten du vil bruke marginer eller polstring på.

Som gir oss?


Trinn 3: En krøllet hjørne

For å skape illusjonen av et krøllet hjørne, bruker vi generert innhold eller pseudoelementer.

Først legg til innhold :før vårt ikon. I dette tilfellet krever vi ingen spesifikk tekst. I stedet må vi lage en 15px-boks, og bruke en bakgrunnsgradient.

 .docIcon: før innhold: ""; skjerm: blokk; posisjon: absolutt; topp: 0; høyre: 0; bredde: 15px; høyde: 15px; bakgrunn: #ccc; bakgrunn: -webkit-lineær gradient (45deg, #fff 0, #eee 50%, #ccc 100%); bakgrunn: -moz-lineær gradient (45deg, #fff 0, #eee 50%, #ccc 100%); bakgrunn: -o-lineær gradient (45deg, #fff 0, #eee 50%, #ccc 100%); bakgrunn: -ms-lineær gradient (45deg, #fff 0, #eee 50%, #ccc 100%); bakgrunn: lineær gradient (45deg, #fff 0, #eee 50%, #ccc 100%); -webkit-boks-skygge: rgba (0,0,0,0,05) -1px 1px 1px, innsett hvit 0 0 1px; -moz-boks-skygge: rgba (0,0,0,0,05) -1px 1px 1px, innsett hvit 0 0 1px; boks-skygge: rgba (0,0,0,0,05) -1px 1px 1px, innsett hvit 0 0 1px; grensebunn: 1px solid #ccc; border-left: 1px solid #ccc; 

For at vårt genererte innhold også skal motta den øverste høyre avrundede kanten, må vi igjen bruke samme radius for å justere den.

? -webkit-grense-radius: 3px 15px 3px 3px; -moz-grense-radius: 3px 15px 3px 3px; border-radius: 3px 15px 3px 3px;

Tada!


Trinn 4: Legge til linjer

Deretter skal vi bruke :etter psuedo element for å legge til noen stiplede linjer for å representere forstørret tekst. Påfør en bredde på 60%, og a margin-left og margin-right av 20% (som tilsvarer 100%). Deretter spesifiserer vi en høyde og plasserer den på 0 0.

 .docIcon: etter innhold: ""; display: block; stilling: absolutt; venstre: 0; topp: 0; bredde: 60%; margin: 22px 20% 0; høyde: 15px; 

Å lage et sett med linjer er litt vanskelig. Hvis vi er klare, kan vi imidlertid bruke CSS-gradienter for å oppnå denne effekten. Først del opp den totale høyden med fem, og sett hver blokk med en solid fylling. Se bildet nedenfor for å få et tydeligere eksemplar på denne tenkningen. Nifty, ay? Det er en fin teknikk å ha i verktøylengden.

Flere linjer (Stripes) med CSS3 Gradienst

 .docIcon: etter ? bakgrunn: #ccc; bakgrunn: -webkit-lineær gradient (topp, #ccc, #ccc 20%, #fff 20%, #fff 40%, #ccc 40%, #ccc 60%, #fff 60%, #fff 80% #ccc 80%, #ccc 100%); bakgrunn: -moz-lineær gradient (topp, #ccc, #ccc 20%, #fff 20%, #fff 40%, #ccc 40%, #ccc 60%, #fff 60%, #fff 80% #ccc 80%, #ccc 100%); Bakgrunn: -o-lineær gradient (topp, #ccc, #ccc 20%, #fff 20%, #fff 40%, #ccc 40%, #ccc 60%, #fff 60%, #fff 80% #ccc 80%, #ccc 100%); bakgrunn: -ms-lineær gradient (topp, #cc 0, #ccc 20%, #fff 20%, #fff 40%, #ccc 40%, #ccc 60%, #fff 60%, #fff 80% #ccc 80%, #ccc 100%); bakgrunn: lineær gradient (topp, #cc 0, #ccc 20%, #fff 20%, #fff 40%, #ccc 40%, #ccc 60%, #fff 60%, #fff 80%, #ccc 80 %, #ccc 100%); 

Vi er ferdige!

Live demo

Nyt du innlegget? Har andre lignende triks? I så fall, lenke til dem i kommentarene nedenfor.