Modułowość SASS
Dzięki modułowości można stworzyć bardziej przejrzysty i zwięzły kod, a gotowe moduły można wykorzystywać wielokrotnie. Modułowość pozwala na stworzenie kolejnych plików, w których będą przechowywane mixiny, zmienne, a następnie używanie wewnątrz całego projektu bez potrzeby „wpadania” bez przerwy na ten podstawowy kod.
Tworzenie modułu: Nazwa pliku, który ma być wykorzystany powinna być poprzedzona dolnym podkreślnikiem, z kolei w pliku do którego importujemy należy użyć słowa kluczowego @import i nazwę pliku ze ścieżką (nazwa bez podkreślnika i bez rozszerzenia SCSS).
W celu zaimportowania plików: _variable.scss , _mixins.scss
do pliku style.scss
we wnętrzu pliku style.scss
wystarczy dodać zapis:
@import “variable”;
@import “mixins”;
//lub zapis równoważny:
@import “variable”, “mixins”;
Pętle w SASS
Do czego mogą przydać się pętle w preprocesorach? Najbardziej sensownym przykładem wykorzystania pętli jest stworzenie wielu podobnych styli np. klas. W przykładzie poniżej grupa elementów, które są kolejno wybierane metodą :nth-child(x)
, a następnie zmieniony jest kolor tła.
Pierwszą pętlą jest @for
(fioletowe kolory na powyższym screenie). Wymaga ona podania zakresu from 1 through 5
i umożliwia operowanie indeksem #{$i}
lub $i
.
@for $i from 1 through 5 {
#here>p:nth-child(#{$i}) {
background-color: rgb(50*$i, 30*$i, 60*$i);
}
}
Druga pętla @each
(żółte kolory na powyższym screenie). Umożliwia ona iterację po tablicach, więc nie wymaga zakresu, ale tablicy. W poniższym przykładzie $list
. Kolor tła zmieniany jest funkcją darken
.
$list: 1,2,3,4,5;
@each $lst in $list {
#here2>div:nth-child(#{$lst}) {
background-color: darken(yellow, $lst * 5%);
}
}
Trzecia pętla @while
(czerwone kolory na powyższym screenie). Wymaga zadbania samemu o zmianę wartości licznika (tutaj $j
). Kolor tła zmieniany jest funkcją lighten
.
$j:1;
@while $j <=5 { #here3>p:nth-child(#{$j}) {
background-color: lighten(red, $j * 5%);
$j:$j+1;
}
}
Warunki w SASS
Do czego mogą przydać się warunki w preprocesorach? Użycie warunków nie jest oczywiste, a nawet pojawiają się opinię wskazujące na ich bezużyteczność w SASS. Można jednak wyobrazić sobie sytuację, w której w ramach jednego pliku ta sama klasa zmienia się w zależności od deklaracji.
$text-color: red;
$bg-color: green;
$client: papol;
@if $client == papol {
$text-color: white;
$bg-color: black;
} @else if $client == some {
$text-color: black;
$bg-color: white;
}
#lead {
color: $text-color;
background-color: $bg-color;
}
- Jeżeli wywołamy powyższy przykład np. korzystając z modułu, nadają zmiennej wartość:
$client: papol
kod wywoła się ustawiają kolor tekstu na biały, a tła na czarny. - Jeżeli jednak zmienna będzie miała wartość
$client: some
kod zostanie wywołany ustawiając kolor tekstu na czarny, a tło na biały.