Operatory w SASS
Ten artykuł wyjaśnia operatory w SASS.
Wyjaśnimy operatory w SASS na praktycznych przykładach.
YouTube Video
Operatory w SASS
Operatory SASS obejmują operacje numeryczne, operacje porównawcze, operacje logiczne oraz manipulacje na ciągach tekstowych.
Operacje arytmetyczne (dodawanie, odejmowanie, mnożenie, dzielenie, reszta z dzielenia)
SASS obsługuje standardowe operacje arytmetyczne, ale dzielenie / może być mylące w porównaniu z użyciem / w CSS, dlatego zaleca się stosowanie math.div(). Liczby mogą mieć jednostki, a operacje są możliwe tylko między kompatybilnymi jednostkami.
Poniżej znajdują się przykłady prostych działań arytmetycznych oraz użycia modułu math.
1@use "sass:math";
2
3$base: 16px;
4$gutter: 8px;
5
6/* Addition and multiplication (allowed since both units are px) */
7.container {
8 width: $base + $gutter * 3; // -> 40px
9}
10
11/* Use math.div() for division (/ is deprecated and triggers a warning) */
12.half {
13 padding: math.div($base, 2); // -> 8px
14}- Ten kod jest przykładem dodawania i mnożenia z jednostką
pxoraz dzielenia przy użyciumath.div(). - Niekompatybilne jednostki, takie jak
10px + 2em, spowodują błąd lub nieoczekiwane wyniki. Ujednolić jednostki lub użyć funkcjiunit()iunitless().
Obsługa i automatyczna konwersja jednostek
SASS obsługuje liczby z jednostkami, a zasady dotyczące jednostek wynikających z obliczeń podążają za ogólnymi regułami fizycznymi. Na przykład, px/px staje się bezjednostkowe. Zachowaj ostrożność przy zarządzaniu jednostkami podczas używania funkcji unit() lub po math.div().
Poniżej znajdują się przykłady pokazujące, jak obsługiwać mieszanie wartości z jednostkami i bez.
1$width: 100px;
2$ratio: 0.5;
3
4.box {
5 /* Multiply width by a ratio (multiplying by a unitless value is fine) */
6 width: $width * $ratio; // -> 50px
7}
8
9/* If you want to remove the unit, combine it with math.div() for the operation */- Mnożenie wartości z jednostkami i bez działa zgodnie z oczekiwaniami, ale podczas dzielenia należy uważać na powstałą jednostkę (lub jej brak).
Operatory porównania (==, !=, <, >, <=, >=)
SASS posiada operatory porównania, które można używać do warunkowego rozgałęziania (@if) oraz w mixinach. Porównywanie złożonych typów, takich jak kolory i listy, rządzi się własnymi regułami. Porównania kolorów zależą od przestrzeni barw.
Poniżej znajduje się przykład porównania dwóch liczb i rozgałęzienia stylu.
1$breakpoint: 768px;
2
3.container {
4 @if $breakpoint >= 768px {
5 max-width: 1200px;
6 } @else {
7 max-width: 100%;
8 }
9}- Operatory porównania można łączyć z
@ifdo tworzenia responsywnych i warunkowych zasad stylu.
Operacje logiczne (and, or, not)
SASS obsługuje and, or oraz not. Stosuj and/or, aby połączyć wiele warunków. Priorytet i kolejność obliczeń można sprecyzować przy użyciu nawiasów.
Poniżej znajduje się przykład obsługi złożonych warunków przy użyciu operatorów logicznych.
1$mobile: false;
2$logged-in: true;
3
4.notice {
5 @if $logged-in and not $mobile {
6 display: block;
7 } @else {
8 display: none;
9 }
10}- Priorytet operatorów
andiormożna wyjaśnić za pomocą nawiasów. W przypadku złożonych warunków stosowanie nawiasów pomaga zachować czytelność i bezpieczeństwo.
Operacje na ciągach — łączenie i interpolacja
W SASS łączenie ciągów może być wykonywane za pomocą + lub interpolacji #{}. Wynik operatora + zależy od tego, czy lewy ciąg jest w cudzysłowie, dlatego bezpieczniej jest użyć przewidywalnej interpolacji #{}.
Poniżej znajdują się przykłady łączenia i interpolacji.
1@use "sass:string";
2
3$base: "icon-";
4$variant: string.unquote("arrow");
5
6.icon {
7 /* Concatenation using + (old style) */
8 &--old { content: $base + $variant; } // -> icon-arrow
9
10 /* Interpolation is more reliable */
11 &--new { content: "#{$base}#{$variant}"; } // -> icon-arrow
12}
13
14/* Interpolation is useful for generating selector names, URLs, or animation names */
15@keyframes slide-#{$variant} {
16 from { transform: translateX(0); }
17 to { transform: translateX(100%); }
18}- Stosując interpolację
#{}, unikasz problemów związanych z cudzysłowami i niezamierzonymi odstępami.
Arytmetyka kolorów (przestarzała)
W przeszłości SASS obsługiwał 'arytmetykę kolorów', co pozwalało na dodawanie lub odejmowanie liczb od kolorów. Jednak arytmetyka kolorów jest obecnie przestarzała; aby manipulować kolorami, należy używać funkcji z modułu sass:color.
Poniżej znajdują się przykłady pokazujące, że bezpośrednia arytmetyka kolorów jest przestarzała oraz sugerowane alternatywy.
1/* Deprecated (old code example – no longer works or recommended) */
2/* background: $base-color + 10; */
3
4@use "sass:color";
5
6$base: #336699;
7
8.bg {
9 /* For example, to increase lightness, use color.scale() or color.adjust() */
10 /* Safe manipulation based on color space */
11 background: color.scale($base, $lightness: 20%);
12 /* Or make it lighter by mixing white */
13 background: color.mix(white, $base, 20%);
14}- Jeśli chcesz manipulować kolorami, użyj funkcji z modułu
sass:color.
Nawiasy i priorytet operatorów
Używaj nawiasów, aby kontrolować kolejność wykonywania operacji. Nawiasy są zawsze oceniane przed operacjami poza nimi. Stosuj nawiasy w złożonych wyrażeniach, aby zachować czytelność.
Poniżej znajdują się przykłady wyjaśniające kolejność obliczeń poprzez zastosowanie nawiasów.
1@debug (1 + 2) * 3; // 9
2@debug 1 + 2 * 3; // 7 (multiplication first)- Tak jak w matematyce, obowiązują reguły priorytetów, więc używaj nawiasów, aby zapewnić wykonywanie obliczeń we właściwej kolejności.
Podsumowanie
Korzystając z operatorów w SASS, ważne jest pisanie kodu z myślą o przyszłej kompatybilności i czytelności. W złożonych wyrażeniach wyjaśniaj kolejność obliczeń za pomocą nawiasów i stawiaj na czytelność kodu.
Możesz śledzić ten artykuł, korzystając z Visual Studio Code na naszym kanale YouTube. Proszę również sprawdzić nasz kanał YouTube.