Sass er et kraftig verktøy som bringer mange funksjoner fra andre programmeringsspråk i CSS - som funksjoner, variabler og sløyfer - samt å bringe sine egne intuitive funksjoner som mixins, nesting og delvis for å nevne noen.
I denne opplæringen skal vi skape sosiale ikoner ved hjelp av Sass Loops, Mixins og Funksjoner. Vi bruker også den kraftige nesting tilgjengelig i Sass.
Vi opprettholder en liste i Sass for å generere våre sosiale ikoner, som vil bestå av klassen, skrifttype referanse og farge først - og senere verktøyet.
Og vi skal bruke mixins for å lage gjenbrukbare medieforespørsler og skape en funksjon for å slå en pikselverdi til en EM-verdi. For å gjøre dette, vil vi også opprette en variabel for vår base skriftstørrelse.
Det finnes en rekke måter å installere og bruke Sass avhengig av systemet ditt og dine Build Tooling-behov - flere detaljer kan bli funnet her - Vi skal imidlertid bruke kodepen til å kompilere vår sass i CSS for å holde ting så enkelt som mulig.
For å virkelig utnytte Sassens kraft og ikke komme deg inn i et rot av spesifisitet og kompleksitet, er det nødvendig med en solid forståelse av CSS. Den spesielle smaken av Sass vi skal bruke er SCSS (Sassy CSS), noe som betyr at vi fortsatt bruker de krøllete brakettene {} i vår SASS-kode.
Få opplæringsfilene
For å laste ned eksempelfilene for denne opplæringen, gå til Filsilo. , velg gratis ting og gratis innhold ved siden av opplæringen. Merk: Første gangs brukere må registrere deg for å bruke filsilo.
Det første vi trenger å gjøre er Opprett en ny penn og endre noen av standardinnstillingene for CSS-editoren i Codepen. Vi endrer CSS-preprocessoren til SCSS og slår på Normalize og AutoPrefixer.
Nå har vi satt alt opp, vi kan begynne å skrive noen kode. Inne i HTML-editoren lager vi en beholder og en rekke elementer som inneholder lenken og ikonet for hvert av våre ikoner.
Navnene som brukes her, vil bli brukt i vår SASS-liste som referanse i CSS. Vi bruker også BEM-navngivningskonvensjonen for våre klassenavn.
& lt; div class = "sosial__container" & gt;
& lt; div class = "Social__item" & gt;
& lt; et mål = "_ tom" href = "..."
klasse = "Social__icon - Twitter" & gt;
& lt; i class = "Ikon - Twitter" & gt; & lt; / i & gt;
& lt; / a & gt;
& lt; / div & gt;
...
& lt; / div & gt;
Flytte over til CSS-editoren Vi starter med å inkludere font-kjempebra, sette en variabel for vår basestørrelse og noen grunnleggende stiler for siden.
@Import URL (http://srt.lt/w8YT8);
// Variabler
$ BASE-FONT-STØRRELSE: 16PX;
// grunnleggende styling
kropp {
FONT-STØRRELSE: $ BASE-FONT-STØRRELSE;
...
}
Deretter lager vi en grunnleggende funksjon for å slå en pikselverdi til en EM-verdi ved hjelp av vår "$ Base-Font-Size" -variabel.
Funksjoner i Sass er opprettet ved hjelp av '@function' etterfulgt av navnet på funksjonen og inngangen som brukes til å utføre funksjonen.
Deretter inne i erklæringen bruker vi '@return' for å sende ut verdien når du bruker funksjonen. '# {}' Rundt beregningen brukes til interpolering .
// funksjoner
@function px-to-em ($ piksler) {
@return # {$ piksler / $ base-font-size} em;
}
Fortsetter med vårt oppsett Vi lager mixins for enkle mobil-første medieforespørsler ved hjelp av vår "PX-TO-EM" -funksjon, som vi vil passere i en PX-verdi for å returnere en EM-verdi.
Mixins er opprettet ved hjelp av '@ Mixin' etterfulgt av et navn for mixin. Deretter inne i erklæringen vi bruker '@Content' for å sende ut koden vi legger inne i blandingen når du ringer den senere i vår kodebase.
@ Mixin Viewport - Large {
@Media eneste skjerm og
(min bredde: px-to-em (1680px)) {
@innhold;
}}
@Mixin Viewport - Medium {
@Media eneste skjerm og
(min bredde: px-to-em (1080px)) {
@innhold;
}}
Det siste trinnet i oppsettet vårt er å lage en liste. Lister i Sass er opprettet ved hjelp av en variabel; Deretter er den nøyaktige syntaksen ganske løs, og aksepterer et bredt utvalg av måter å definere det på .
Inne i variabelen vil vi definere klassenavnet, Unicode-verdi og farge for hvert ikon, separere dem med et komma, inne i parentes.
$ Ikon-liste: (
Vimeo "\ F27D" # 1AB7EA,
Twitter "\ F099" # 1DA1F2,
...
Github "\ F113" # 333,
RSS "\ F09E" # F26522
);
For at våre sosiale ikoner skal vise på rad, legger vi til noen enkle CSS til hver av deres beholdere.
.Social__item {
Skjerm: Inline-blokk;
margin-høyre: 0.05em;
}
For å minimere mengden CSS vi sendes, bruker vi en CSS3-velger for å finne alle klassene som begynner med 'Ikon' og opprette en delt stil for dem.
[klasse ^ = "Ikon"] {
Font-Family: 'Fontawesome';
Snakk: Ingen;
Font-stil: normal;
font-vekt: normal;
font-variant: normal;
Tekst-transformasjon: ingen;
linjehøyde: 1;
-Webkit-font-utjevning: antialiased;
-Moz-OSX-Font-utjevning: Gråskala; }
Ved hjelp av samme metode vil vi gjøre det samme for knappene som definerer våre verdier i 'EM', slik at vi senere kan endre størrelsen på dem ved hjelp av beholderen.
[klasse ^ = "Social__icon"] {
FONT-STØRRELSE: 1EM; Bredde: 2EM; Høyde: 2EM;
Bakgrunnsfarge: # 333;
farge: hvit;
Tekst-dekorasjon: ingen;
Border-Radius: 100%;
Tekstjustering: Senter;
Skjerm: Flex;
Justeringsartikler: Senter;
Justify-innhold: Senter;
}
Nå har vi alle våre basestiler vi kan bruke vår liste for å generere CSS-spesifikke for hvert ikon.
For å lage en løkke i Sass bruker vi '@ach' etterfulgt av navn for hver verdi av hvert element - '$ Ikon', '$ Unicode' og '$ Ikon-bakgrunn' - etterfulgt av ordet 'i' og deretter navnet av listen.
Inne i sløyfen bruker vi "$ unicode" -verdien til "før" pseudo-elementet i hvert ikon vi har opprettet i HTML, slik at den delte stilen vi opprettet tidligere for å ta vare på alle de andre stilene som trengs.
@Each $ Ikon, $ Unicode, $ Ikon-bakgrunn
i $ Ikon-liste {
.icon - # {$ icon} {
& amp ;:: før {
Innhold: $ Unicode;
}
}
}
Ikonene er nå alle arbeidende, men vi har fortsatt fallback-bakgrunnsfargen. Vi legger til litt mer kode på vår liste for å fikse det. Ved å bruke samme metode som ovenfor, vil vi sende inn "$-ikonet", men denne gangen på "Social__icon" -klassene og inne i den "$-ikon-bakgrunn" -fargen.
@Each $ Ikon, $ Unicode, $ Ikon-bakgrunn
i $ Ikon-liste {
...
.Social__icon - # {$ ICON} {
bakgrunnsfarge: $ Ikon-bakgrunn;
}
}
Ved å bruke mixinsene vi opprettet tidligere, og fordi vi stylet ikonene ved hjelp av 'EM' -verdier, kan vi bruke en skriftstørrelse til beholderen og øke den ved hjelp av mediaspørsmålet mixin ved hjelp av '@include' og navnet på blandingen etterfulgt av Kode vi vil inkludere i media-spørringen.
.Social__container {
FONT-STØRRELSE: 1EM;
@include Viewport - Medium {
FONT-STØRRELSE: 1.5 EM;
}
@include Viewport - stor {
FONT-STØRRELSE: 2EM;
}}
Vi kan legge til litt interaktivitet i våre knapper ved å endre bakgrunnsfargen når knappen er interaksjon med enten å bruke musen eller tastaturet.
Sass har en rekke Innebygde fargefunksjoner Tillat oss å ta bakgrunnsfargen vi har satt i vår liste og blande den med svart for å mørke knappen - når de samhandles med.
Ikon - # {$ Ikon} {
bakgrunnsfarge: $ Ikon-bakgrunn;
& amp;: hover,
& amp;: fokus,
& amp;: aktiv {
bakgrunnsfarge:
blanding (svart, $ ikon-bakgrunn, 15%);
}}
Vi kan også benytte 'Transition' eiendommen i CSS for å animere forskjellene mellom bakgrunnsfargene. Vi kunne bruke "All" -verdien, men det er både dyrt når det gjelder ytelse og vil ikke tillate oss å overføre forskjellige verdier ved forskjellige tidspunkter og timing-funksjoner.
[klasse ^ = "Social__icon"]{
...
Overgang: Bakgrunnsfarge
150ms lette ut
;
}
Ved å legge til en "relativ" posisjonering til knappene og en toppverdi og legge til "topp" til vår "overgang" eiendom, kan vi klare elementene for videre interaksjon.
[klasse ^ = "Social__icon"] {
posisjon: relativ;
Topp: 0;
...
Overgang: Bakgrunnsfarge
150ms lette ut,
Topp 250ms lineære
; }
For denne samspillet er det ikke noe som er nødvendig for å skape det, derfor kan vi legge til koden til den delte klassen. Ved å bruke en negativ toppverdi og fjerne oversikten har vi en enda klarere visuell cue av interaksjon.
[klasse ^ = "Social__icon"] {
...
& amp;: hover,
& amp;: fokus,
& amp;: aktiv {
disposisjon: ingen;
Topp: -0.25 EM;
}}
Vi kan også bruke samme metode for å skape og animere en 'Box-Shadow' - legger litt mer dybde til samspillet - endre skyggens vertikale høyde på samme tid som toppverdien.
Box-Shadow:
0 0 0.25em -0.25em RGBA (0,0,0,0,2);
& amp;: hover,
& amp;: fokus,
& amp;: aktiv {
...
Box-Shadow:
0 0.5em 0.25em -0.25em RGBA (0,0,0,0,3);
}
Vi kan enkelt legge til verktøytips med CSS for å legge til ytterligere klarhet for våre brukere. Det første vi vil gjøre er å legge til verktøytipsverdien til listen. Sørg for å skrive dem i anførselstegn for å tillate bruk av mellomrom hvis nødvendig.
$ Ikon-liste: (
Vimeo "Vimeo" "\ F27D" # 1AB7EA,
Twitter "Twitter" "\ F099" # 1DA1F2,
...
Github "Github" "\ F113" # 333,
RSS "RSS" "\ F09E" # F26522,
);
På grunn av tillegget til vår liste må vi endre vår '@Each' Loop for å inkludere verktøytipsverdien ('$ NAME'). Vi kan deretter sende det navnet som innholdet i "før pseudo" -elementet på våre knapper.
@ach $ ikon, $ navn, $ unicode,
$ Ikon-bakgrunn i $ Ikon-liste {
...
.Social__icon - # {$ ICON} {
...
& amp ;:: før {
Innhold: '# {$ NAME}';
}
}}
Nå har vi navnet på hvert element som vises på skjermen .
& amp; :: før {...
Topp: -3.5em;
opasitet: 0;
overgang:
topp 250ms lineære, opacity 150ms lineære 150ms;
}
& amp ;: Hover, ... {...
& amp ;:: før {
opasitet: 1;
Topp: -2.5em; }
}
Vi vil bruke CSS Triangles. For å lage bunnen av våre verktøytips - igjen posisjonering av elementet klargjør det for overganger - ved å overføre opasiteten og toppverdiene på forskjellige tidspunkter.
Ved å legge til en forsinkelse får vi en animasjon som består av verktøytipen fading inn og beveger seg ned på plass.
& amp; :: etter {...
Topp: -1.9 EM;
opasitet: 0;
overgang:
topp 250ms lineære, opacity 150ms lineære 150ms;
}
& amp ;: Hover, ... {...
& amp ;:: Etter {
opasitet: 1;
Topp: -0.9em; }
}
Codepen-samlingen av opplæringsstrinnene kan bli funnet her .
Denne artikkelen opprinnelig dukket opp i Web Designer Magazine Issue 264. Kjøp det her .
Les mer:
[1. 3] (Bilde Kreditt: Dahlia Khodur) Karakterark er dagens ordre i denne opplæringen, som dekker hvordan du lager en..
[1. 3] Å vite hvordan du kan endre størrelsen på et bilde i Photoshop, er en grunnleggende ferdighet for designere. Enten du la..
[1. 3] Alle kunstnere har sin egen unike arbeidsflyt når du lager 3D-kunst i Zbrush. Denne arbeidsflyten kan bety en haug med tek..
[1. 3] Det er en uberettiget mystikk rundt oljemaleri som har satt noen kunstnere fra å utforske dem. Hvis du vet riktig ..
[1. 3] Vue.js har kommet på hopp og grenser nylig, blir det sjette mest forkedprosjektet så langt på GitHub. På..
[1. 3] Ved å bruke en nodebasert, prosessorisk tilnærming, gir 3D-programvare Houdini fra SideFX digitale artister et bemerkelse..
[1. 3] Jeg har gjort det blyant kunst Siden barndommen min, da jeg ville bære en blyant og papir rundt med meg. Fa..
[1. 3] I de 10 beste språkene som brukes på internett, engelsk rangerer først , med nesten 950 millioner brukere..