Iteracja w SASS
Ten artykuł wyjaśnia, jak obsługiwać iterację w SASS.
Wyjaśnimy krok po kroku, jak wykonywać iterację w SASS, używając rzeczywistych przykładów kodu.
YouTube Video
Iteracja w SASS
Iteracja w SASS pomaga unikać powielania kodu i pozwala tworzyć elastyczne i wielokrotnego użytku style.
Powody używania iteracji w SASS
Istnieje kilka zalet używania iteracji, takich jak:.
- Możliwość ponownego użycia kodu rośnie, co ułatwia generowanie podobnych stylów wzorców.
- Łatwiejsza konserwacja, co ułatwia zmianę stylów jednocześnie.
- Zmniejsza również liczbę błędów.
Na przykład, możesz wygenerować style dla przycisków w różnych kolorach lub komponentów w wielu rozmiarach jednocześnie.
Składnia używana do iteracji w SASS
Główna składnia używana do iteracji w SASS wygląda następująco:.
- Używając
@for, możesz wykonywać iterację po określonym zakresie liczb. - Używając
@each, możesz iterować po listach lub mapach. - Używając
@while, możesz wykonywać pętlę, dopóki nie zostanie spełniony określony warunek.
Iteracja z użyciem @for
@for wykonuje powtarzające się operacje na podstawie określonego zakresu liczb.
Składnia
1/*
2@for $i from <start> to <end> {
3 ...
4}
5
6@for $i from <start> through <end> {
7 ...
8}
9*/- Określ wartości początkowe i końcowe dla
<start>i<end>. Użycietowyklucza wartość końcową, athroughją uwzględnia.
Przykład
Poniższy kod automatycznie generuje klasy ze wzrastającą grubością obramowania o 1px każda.
1@for $i from 1 through 5 {
2 .border-#{$i} {
3 border-width: #{$i}px;
4 }
5}- Ten kod automatycznie generuje klasy dla grubości obramowania zwiększającej się o 1px. Dyrektywa
@forjest tu używana do pętli od 1 do 5.
Wygenerowany CSS
1.border-1 {
2 border-width: 1px;
3}
4.border-2 {
5 border-width: 2px;
6}
7.border-3 {
8 border-width: 3px;
9}
10.border-4 {
11 border-width: 4px;
12}
13.border-5 {
14 border-width: 5px;
15}- Klasy od
.border-1do.border-5zostaną wygenerowane po kolei, z każdym obramowaniem zwiększonym o 1px.
Iteracja z użyciem @each
@each wykonuje pętlę za pomocą list lub map. Jest przydatna, gdy chcesz efektywnie generować zróżnicowane klasy.
Składnia
1/*
2@each $item in <list> {
3 ...
4}
5*/Przykład 1: Użycie listy
Poniższy kod generuje wiele klas kolorów tekstu.
1@each $color in ("red", "blue", "green") {
2 .text-#{$color} {
3 color: #{$color};
4 }
5}- Ten kod automatycznie generuje klasy kolorów tekstu dla każdego koloru na liście. Dyrektywa
@eachsłuży do przetwarzania każdej wartości z listy po kolei.
Wygenerowany CSS
1.text-red {
2 color: red;
3}
4.text-blue {
5 color: blue;
6}
7.text-green {
8 color: green;
9}- Gdy plik SASS zostanie skompilowany do CSS, klasy takie jak
.text-red,.text-bluei.text-greenzostaną wygenerowane dla każdego koloru z listy.
Przykład 2: Użycie mapy
Użycie mapy pozwala obsługiwać pary klucz-wartość. W poniższym przykładzie kolory tła przycisków są definiowane przy użyciu mapy.
1$colors: (
2 primary: #3498db,
3 success: #2ecc71,
4 danger: #e74c3c
5);
6
7@each $name, $hex in $colors {
8 .bg-#{$name} {
9 background-color: #{$hex};
10 }
11}Wygenerowany CSS
1.bg-primary {
2 background-color: #3498db;
3}
4.bg-success {
5 background-color: #2ecc71;
6}
7.bg-danger {
8 background-color: #e74c3c;
9}- Kiedy plik SASS zostanie skompilowany do CSS, klasy takie jak
.bg-primary,.bg-successi.bg-dangerzostaną wygenerowane dla każdego klucza w mapie.
Iteracja przy użyciu @while
@while kontynuuje pętlę, dopóki warunek jest spełniony.
Składnia
1/*
2@while <condition> {
3 ...
4}
5*/Przykład
Na przykład, jeśli chcesz krok po kroku zwiększać rozmiar czcionki, możesz to zapisać w następujący sposób:.
1$i: 1;
2
3@while $i <= 5 {
4 .font-#{$i} {
5 font-size: #{$i}rem;
6 }
7 $i: $i + 1;
8}- Możesz użyć dyrektywy
@whiledo przeprowadzania iteracji podczas zwiększania rozmiaru czcionki etapami. Używając zmiennej $i, klasy są automatycznie generowane dla wartości od 1 do 5.
Wygenerowany CSS
1.font-1 {
2 font-size: 1rem;
3}
4.font-2 {
5 font-size: 2rem;
6}
7.font-3 {
8 font-size: 3rem;
9}
10.font-4 {
11 font-size: 4rem;
12}
13.font-5 {
14 font-size: 5rem;
15}- Gdy plik SASS zostanie skompilowany do CSS, klasy z rozmiarami czcionki od 1rem do 5rem zostaną wygenerowane automatycznie.
Zaawansowany przykład: Łączenie iteracji z zagnieżdżeniami
Łącząc iterację z funkcją zagnieżdżania w SASS, uzyskasz jeszcze bardziej zaawansowane generowanie stylów.
Przykład
Poniżej przykład, w którym kolory tła i kolory po najechaniu dla przycisków są definiowane razem.
1@use "sass:color";
2
3$colors: (
4 primary: #3498db,
5 success: #2ecc71,
6 danger: #e74c3c
7);
8
9@each $name, $hex in $colors {
10 .btn-#{$name} {
11 background-color: $hex;
12 color: white;
13
14 &:hover {
15 background-color: color.scale($hex, $lightness: -10%);
16 }
17 }
18}- Łącząc iterację oraz zagnieżdżanie w SASS, możesz jednocześnie generować kolory tła przycisków oraz kolory dla efektu najechania kursorem. Dla każdego koloru w mapie tworzona jest klasa
.btn-, a styl:hoverjest definiowany z użyciem zagnieżdżania.
Wygenerowany CSS
1.btn-primary {
2 background-color: #3498db;
3 color: white;
4}
5.btn-primary:hover {
6 background-color: #2980b9;
7}
8.btn-success {
9 background-color: #2ecc71;
10 color: white;
11}
12.btn-success:hover {
13 background-color: #27ae60;
14}
15.btn-danger {
16 background-color: #e74c3c;
17 color: white;
18}
19.btn-danger:hover {
20 background-color: #c0392b;
21}- Podczas konwertowania pliku SASS na CSS, kolory tła i kolory po najechaniu dla każdego przycisku są generowane automatycznie, a style :hover są definiowane zbiorczo przy użyciu zagnieżdżania.
Wskazówki przy korzystaniu z iteracji
Miej na uwadze poniższe punkty, aby pisać bardziej wydajny i czytelny kod przy użyciu iteracji.
-
Unikaj nadmiernego zagnieżdżania Nadmierne zagnieżdżenia zmniejszają czytelność, więc ogranicz je do minimum.
-
Zwróć uwagę na wpływ na wydajność Jeśli przez iterację wygenerujesz zbyt wiele klas, Twój CSS może niepotrzebnie się rozrosnąć.
-
Używaj odpowiednich nazw zmiennych Dla zmiennych takich jak
$ilub$itemstosuj znaczące nazwy, aby kod był łatwiejszy do zrozumienia.
Podsumowanie
Wykorzystanie iteracji w SASS pozwala na wydajne i łatwe w utrzymaniu projektowanie stylów. W szczególności, wybór pomiędzy @for, @each a @while pozwala generować dynamiczny i elastyczny CSS.
Możesz śledzić ten artykuł, korzystając z Visual Studio Code na naszym kanale YouTube. Proszę również sprawdzić nasz kanał YouTube.