Slik bruker du Sass til å bygge ett prosjekt med flere temaer

Frontend-utviklerens arbeidsflyt har gjennomgått store endringer de siste årene. Mer kompleksitet, høyere krav og større prosjekter beveger oss mot nye teknologier som forprosessorer. Personlig elsker jeg min preprocessor arbeidsflyt og vil ikke savne Sass for mine prosjekter i disse dager - uten det ville jeg være et rot.

En situasjon spesielt hvor Sass har hjulpet meg ut, er å skape en enkelt solid frontend som kan ha forskjellige temaer - forandre farger, bilder eller fonter med letthet. I dag skal jeg beskrive arbeidsflyten min, jeg håper du tar noe nyttig vekk fra det.

Grunnleggende struktur

Her er strukturen av et eksempelprosjekt. Du kan bruke hvilke deler du logisk føler bør inkluderes. Nøkkelen er å ha en egen mappe for temaer og en ny .SCSS fil for hvert tema. 

Mappestruktur

| - _scss / | - | - _base / | - | - | - _config.scss | - | - _layouts / | - | - | - _l-grid.scss | - | - | - _l-default.scss | - | - _modules / | - | - | - _m-accordions.scss | - | - | - _m-teasers.scss | - | -_themes / | - | - | - _light-theme / | - | - | - | - light .scss | - | - application.scss

Bygg basen med en hovedfil

application.scss fil du importerer alle delene dine, ignorerer mappen _themes / På dette punktet. Dette bygger grunnlaget der vi kan skape forskjellige temaer.

@charset 'UTF-8'; // 1.Base @import '_base / _config.scss'; // 2.Layouts @import '_layouts / _l-grid', '_layouts / _l-default'; // 3.Modules @import '_modules / _m-accordions', '_modules / _m-teasers';

konfigurasjon

Farger, Fonter og mye mer

Konfigurere prosjektet ditt er svært viktig. Her kommer variabler til redning, slik at vi kan angi standardverdier og overskrive verdier på tema nivå senere. Her kan du se at jeg har satt noen variabler for farger, skrifter og grenseinnstillinger.

For mer detaljer om navngivning av variabler, ta en titt på Jim Nielsens Quick Tip: Navn SASS Variablene Modularly.

@charset "UTF-8"; // Farger $ svart: # 000; $ hvit: #fff; $ rød: # e2061c; $ grålys: # c9c8c8; $ grå: # 838282; $ grå-mørk: # 333333; $ blå: # 253652; // Corp-Colors $ corp-farge: $ blue! Default; $ corp-color-dark: darken ($ corp-color, 15%)! default; $ corp-color-second: $ rød! standard; $ corp-color-second-dark: mørkere ($ corp-color-second, 15%)! default; // Font $ base-font-size: 1.8! Default; $ base-font-family: Helvetica, Arial, Sans-Serif! standard; $ base-font-color: $ grå-mørk! standard; // Border $ base-border-radius: 2px! Default; $ avrundet grense: 50%! standard; $ base-border-farge: $ gray! default;

Nøkkelen til dette stadiet er å bruke !misligholde flagg etter de variable deklarasjonene. Ved å gjøre dette kan du overskrive dem innenfor temaet .SCSS filer; de !misligholde effektivt sier "Bruk denne verdien hvis den ikke er definert andre steder".

Bakgrunn-bilder

Svært ofte utviklere lager ikke variabler for bilder, men skriver nettadresser direkte i selektorer. En tilnærming jeg liker er å fjerne alle baner i partiell og sette dem i konfigurasjonsfilen som variabler. Dette vil gjøre livet ditt lettere og prosjektet bedre vedlikeholdt.

// Bilder $ sprite: '... /images/base/sprite.png'! Default; $ colorbox-bakgrunn: '... /images/base/colorbox-background.png'! default;

Eksempel på en grunnmodul

Her kan du se noen bakgrunnsvariabler i aksjon. Dette er en modulær del for et trekkspill, og benytter seg av den globale variabelen $ sprite men også innstilling og bruk av en variabel $ Trekkspill-bgcolor som er spesifikk for modulen. 

// 1.Config $ accordion-bgcolor: $ gray! Default; // 2.Base .m-trekkspill polstring: 20px; bakgrunn: $ accordion-bgcolor;  .m-accordion__trigger bakgrunn: url ($ sprite) no-repeat; 

Hvordan lage et tema

I temafilen din (for eksempel _themes / _light-tema / light.scss fra demonstrasjonsstrukturen ovenfor) importerer application.scss som inneholder alle modulene, layoutene og så videre. Dette er grunnlaget for alt; Med et tema plasserer vi et andre lag over det. Ikke noe mer. Når du har importert application.scss Legg til de samme variablene som ble brukt tidligere, men definer verdier som er spesifikke for dette temaet. 

Ved å bruke denne teknikken vil vi automatisk (og harmløst) kompilere dem i alle våre temaer hvis vi legger til nye moduler i prosjekttrinnet..

@charset 'UTF-8'; // 1.Overbrite ting $ corp-color: $ gray; $ corp-color-darken: mørkere ($ corp-farge, 10%); $ corp-color-second: $ blue; $ corp-color-second-dark: mørkere ($ corp-farge-sekund, 10%); $ base-font-size: 1,6; $ base-font-familie: Droid Sans, Georgia, Arial; $ base-border-radius: 0px; $ base-border-farge: $ grå-lys; // Bilder $ sprite: '... /images/light/sprite.png'; $ colorbox-bakgrunn: '... /images/light/colorbox-background.png'; $ accordion-bgcolor: $ grå-lys; // 2. Importer grunnleggende tema @import '... / ... / application';

Ser på flere filer i Sass

Det siste trinnet er å kompilere Sass til CSS og få to forskjellige filer til bruk. Vi må kompilere application.scss og light.scss. Ved hjelp av kommandolinjen vil du bruke noe som:

sass - watch DIN / PATH / application.scss: DIN / CSSPATH / application.css DIN / PATH / _themes / _light-theme / light.scss: DIN / CSSPATH / light.css

Hvis du bruker en app, for eksempel CodeKit eller Prepros App, blir kompilering en mer visuell prosess.

Inkluder light.css filen i hodet på siden din og ta en titt på ditt friske nettsted.

Konklusjon

Som du kan se, er det nyttig og greit å ha flere temafiler, alt basert på et solid fundament. Ta gjerne spørsmål, eller gi tilbakemelding og del dine erfaringer med oss ​​i kommentarfeltet.