if-funksjonen i SASS
Denne artikkelen forklarer if-funksjonen i SASS.
Vi går gjennom alt fra det grunnleggende ved if-funksjonen til avanserte teknikker, trinn for trinn.
YouTube Video
if-funksjonen i SASS
if()-funksjonen er en enkel betingelsesfunksjon i SASS som returnerer en av to verdier basert på en boolsk betingelse. Den ligner på JavaScripts ternære operator.
Syntaks
Syntaksen er som følger:.
1// if(condition, trueValue, falseValue)- Hvis
conditioner sann, returnerer dentrueValue; hvis falsk, returnerer denfalseValue.
Grunnleggende bruk
For eksempel kan du bruke if()-funksjonen til å endre bakgrunns- og tekstfarger avhengig av om temaet er mørkt eller lyst.
Eksempelkode
1$theme: "dark";
2
3$background-color: if($theme == "dark", black, white);
4$text-color: if($theme == "dark", white, black);
5
6body {
7 background-color: $background-color;
8 color: $text-color;
9}- Hvis
$theme-variabelen er"dark", blir bakgrunnen svart med hvit tekst; hvis den er"light", blir bakgrunnen hvit med svart tekst.
Den genererte CSS-en
1body {
2 background-color: black;
3 color: white;
4}- Siden
$theme-variabelen er"dark", er bakgrunnen svart med hvit tekst.
Forskjeller mellom @if-setningen og if()-funksjonen
Sass tilbyr en @if-setning og en if()-funksjon for betinget forgrening, men de brukes til ulike formål.
Eksempelkode
1$theme: "dark";
2
3// `@if` statement: Compile-time branching (syntax level)
4$background-color: null;
5@if $theme == "dark" {
6 $background-color: black;
7} @else if $theme == "light" {
8 $background-color: white;
9} @else {
10 $background-color: gray;
11}
12
13// `if()` function: Returns a value (expression level)
14$text-color: if($theme == "dark", white, black);
15
16body {
17 background-color: $background-color;
18 color: $text-color;
19}@if-setningen kontrollerer hvilken kode som genereres ved Sass-kompilering.- I motsetning til dette returnerer
if()-funksjonen en verdi og brukes til å bytte verdier dynamisk i uttrykk.
Den genererte CSS-en
1body {
2 background-color: black;
3 color: white;
4}- I dette eksemplet, siden
$themeer"dark", brukes en svart bakgrunn og hvit tekstfarge. - De to viktigste forskjellene er at
@if-setningen styrer strukturen, og atif()-funksjonen returnerer en verdi.
Bruke nestede if-funksjoner
Når du trenger kompleks forgrening, kan du legge if-funksjoner inni hverandre.
Eksempelkode
1$theme: "custom";
2$custom-color: blue;
3
4$background-color: if(
5 $theme == "dark",
6 black,
7 if(
8 $theme == "light",
9 white,
10 $custom-color
11 )
12);
13
14body {
15 background-color: $background-color;
16}- Hvis
$themeer"dark", returnerer den svart; hvis"light", returnerer den hvit; ellers returnerer den standardverdien ($custom-color).
Den genererte CSS-en
1body {
2 background-color: blue;
3}- Siden
$theme-variabelen ercustom, er bakgrunnsfargen blå.
Praktiske bruksområder
Temabytting
Nedenfor er et eksempel som endrer knappestiler basert på temaet.
1$theme: "dark";
2
3.button {
4 background-color: if($theme == "dark", #333, #fff);
5 color: if($theme == "dark", #fff, #333);
6 border: 1px solid if($theme == "dark", #444, #ccc);
7}- Denne koden er et SASS-eksempel på betinget logikk som bytter bakgrunns-, tekst- og kantfarger for en knapp basert på verdien av
$theme-variabelen.if()-funksjonen brukes til å sette stiler dynamisk for mørke og lyse temaer.
Den genererte CSS-en
1.button {
2 background-color: #333;
3 color: #fff;
4 border: 1px solid #444;
5}- Ved å bytte tema kan du endre det overordnede designet på en enhetlig måte.
Avansert eksempel: Dynamisk innstilling av fargekontrast
La oss se på et eksempel som automatisk setter tekstfargen basert på bakgrunnsfargen.
Eksempelkode
1@use "sass:color";
2
3$background-color: #000;
4
5$text-color: if(
6 color.channel($background-color, "lightness", $space: hsl) > 50%,
7 black,
8 white
9);
10
11body {
12 background-color: $background-color;
13 color: $text-color;
14}- Funksjonen
color.channel()brukes til å hente bakgrunnsfargens lyshet (lightness). Hvis den verdien er større enn50%, velges svart; hvis den er mindre, velges hvitt som tekstfarge, noe som automatisk optimaliserer kontrasten mot bakgrunnen.
Den genererte CSS-en
1body {
2 background-color: #000;
3 color: white;
4}- Ved å bruke
if()-funksjonen kan du implementere fleksible stiler som tar hensyn til tilgjengelighet i designet, for eksempel ved å justere kontrast.
Kombinere med @function
Å bruke if-funksjonen inne i en @function gir enda mer fleksibel stilutforming.
Eksempelkode
1@function theme-color($theme, $type) {
2 @return if(
3 $theme == "dark",
4 if(
5 $type == "background",
6 black,
7 white
8 ),
9 if(
10 $type == "background",
11 white,
12 black
13 )
14 );
15}
16
17body {
18 background-color: theme-color("dark", "background");
19 color: theme-color("dark", "text");
20}- Denne koden demonstrerer bruk av
if()inne i en@functionfor å returnere passende farger basert på tema og fargetype. Dette muliggjør konsistent og gjenbrukbar stilutforming for hvert tema.
Den genererte CSS-en
1body {
2 background-color: black;
3 color: white;
4}- Ved å lage og bruke hjelpefunksjoner som utnytter
if()-funksjonen, kan du forbedre vedlikeholdbarheten til hele prosjektet.
Notater
-
if-funksjonen kan ikke brukes med dynamiske verdier Fordi CSS i seg selv er et statisk språk, bestemmerif-funksjonen verdier når SASS kompileres. For betinget logikk under kjøretid må du bruke JavaScript. -
Prioriter lesbarhet Fordi nøstede
if-funksjoner kan bli komplekse og svekke lesbarheten, kan du bruke SASS@mixinog@functionetter behov for å organisere koden.
Konklusjon
SASS' if-funksjon er et kraftig verktøy som returnerer ulike verdier avhengig av betingelser. Den er nyttig ikke bare for enkle betingelser, men også i mange scenarier som temabytting og dynamiske stilinnstillinger. Når du håndterer komplekse betingelser, bør du likevel være oppmerksom på lesbarhet og bruke @mixin og @function for å forbedre vedlikeholdbarheten.
Ved å mestre if-funksjonen kan du oppnå mer effektiv og fleksibel stilutforming.
Du kan følge med på artikkelen ovenfor ved å bruke Visual Studio Code på vår YouTube-kanal. Vennligst sjekk ut YouTube-kanalen.