Cum să utilizați Sass pentru a construi un proiect cu mai multe teme

Fluxul de lucru al dezvoltatorului frontend a suferit mari schimbări în ultimii ani. Mai multă complexitate, cerințe mai mari și proiecte mai mari ne conduc către noi tehnologii, cum ar fi preprocesoarele. Personal, îmi place fluxul de lucru preprocesor și nu vreau să-mi pierd Sass pentru proiectele mele în zilele noastre - fără ea aș fi o mizerie.

O situație în special în cazul în care Sass ma ajutat afară este crearea unui singur frontend solid, care poate avea teme diferite - schimbarea culorilor, a imaginilor sau a fonturilor cu ușurință. Astăzi voi descrie fluxul meu de lucru, sper că veți lua ceva util de la el.

Structură de bază

Iată structura unui exemplu de proiect. Puteți folosi indiferent de partile pe care le simțiți în mod logic. Cheia este să aveți un dosar separat pentru teme și un nou dosar .SCSS fișier pentru fiecare temă. 

Folder-Structură

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

Construiți baza cu un fișier principal

În application.scss fișierul pe care îl importați toate partialele, ignorând dosarul _themes / in acest punct. Aceasta construiește baza pe care putem crea teme diferite.

@charset "UTF-8"; // 1.Baza @import '_base / _config.scss'; / / 2.Layouts @import '_layouts / _l-grid', '_layouts / _l-default'; // 3.Module @ import '_modules / _m-acordeoane', '_modules / _m-teasers';

configurație

Culori, Fonturi și multe altele

Configurarea proiectului dvs. este foarte importantă. Aici variabilele vin la salvare, permițându-ne să setăm valorile implicite, apoi să suprascriem valorile la nivel de temă mai târziu. Aici puteți vedea că am setat unele variabile pentru culori, fonturi și setări de frontieră.

Pentru mai multe detalii privind denumirea variabilelor, aruncați o privire la Sfat rapid al lui Jim Nielsen: Nume variabilele SASS modulare.

@charset "UTF-8"; // Culori $ negru: # 000; $ white: #fff; $ roșu: # e2061c; $ gri-light: # c9c8c8; $ gri: # 838282; $ gri-întuneric: # 333333; $ albastru: # 253652; // Corp-Culori $ corp-color: $ blue! $ corp-color-întuneric: întunecat ($ corp-color, 15%)! implicit; $ corp-color-second: $ roșu! $ corp-color-second-dark: întuneric ($ corp-color-second, 15%)! implicit; // Font $ base-font-size: 1.8! Implicit; $ base-font-family: Helvetica, Arial, Sans-Serif! $ base-font-color: $ gri-întuneric! implicit; // Border $ base-border-radius: 2px! $ rotunjit-raza de graniță: 50%! implicit; $ base-border-color: $ gri!

Cheia acestei etape este folosirea !Mod implicit după declarațiile variabilelor. Acest lucru vă permite să le înlocuiți în cadrul temei .SCSS fișiere; !Mod implicit spune în mod eficient "Utilizați această valoare dacă nu este definită în altă parte".

Imagini de fundal

Dezvoltatorii foarte des nu creează variabile pentru imagini, ci scriu url-uri direct în selectori. O abordare care îmi place este să eliminăm toate căile din cadrul partialelor și să le punem în fișierul de configurație ca variabile. Acest lucru vă va face viața mai ușoară, iar proiectul mai bine întreținut.

// Imagini $ sprite: '... /images/base/sprite.png'! $ colorbox-background: '... /images/base/colorbox-background.png'!

Exemplu de modul de bază

Aici puteți vedea câteva variabile de fond în acțiune. Acesta este un modular parțial pentru un acordeon, care utilizează variabila globală $ sprite dar și setarea și utilizarea unei variabile $ Acordeon-bgcolor care este specific modulului. 

// 1.Config $ acordeon-bgcolor: $ gri! Implicit; // 2.Baza .m-acordeon padding: 20px; fundal: $ acordeon-bgcolor;  .m-accordion__trigger fundal: url ($ sprite) no-repeat; 

Cum de a crea o temă

În fișierul tematic (cum ar fi _themes / _light-tema / light.scss din structura demo de mai sus) application.scss care conține toate modulele, layouts și așa mai departe. Aceasta este baza pentru tot; cu o temă vom plasa un al doilea strat peste el. Nimic mai mult. Odată ce ați importat application.scss adăugați aceleași variabile utilizate anterior, dar definiți valori specifice acestei teme. 

Folosind această tehnică, dacă adăugăm noi module la baza proiectului, vom compila în mod automat (și fără probleme) în toate temele noastre.

@charset "UTF-8"; // 1.Overwrite chestii $ corp-color: $ gri; $ corp-color-întunecat: întunecat ($ corp-color, 10%); $ corp-color-second: $ albastru; $ corp-color-al doilea-întuneric: întunecat ($ corp-culoare-secundă, 10%); $ base-font-size: 1.6; $ base-font-family: Droid Sans, Georgia, Arial; $ base-border-radius: 0px; $ base-border-color: $ gri-lumină; // Imagini $ sprite: '... /images/light/sprite.png'; $ colorbox-background: '... /images/light/colorbox-background.png'; $ acordeon-bgcolor: $ gri-lumină; // 2. Importul temei de bază @import '... / ... / application';

Vizionarea mai multor fișiere în Sass

Ultimul pas este să compilați Sass către CSS și să obțineți două fișiere diferite pentru utilizare. Trebuie să ne compilam application.scss si light.scss. Folosind linia de comandă ai folosi ceva de genul:

sass - vă uitați YOUR / PATH / application.scss: YOUR / CSSPATH / application.css YOUR / PATH / _themes / _light-theme / light.scss: YOUR / CSSPATH / light.css

Dacă utilizați o aplicație, cum ar fi CodeKit sau Prepros App, compilarea va fi un proces mai vizual.

Includeți light.css fișier în capul paginii dvs. și să aruncați o privire la site-ul tău revăzută.

Concluzie

După cum puteți vedea, este util și simplu să aveți mai multe fișiere tematice, toate bazate pe o bază solidă. Simțiți-vă liber să puneți întrebări sau să oferiți feedback și să vă împărtășiți experiențele dvs. în secțiunea de comentarii.