De `if`-functie in SASS
Dit artikel legt de if-functie in SASS uit.
We lopen stap voor stap alles door, van de basis van de if-functie tot geavanceerde technieken.
YouTube Video
De if-functie in SASS
De functie if() is een eenvoudige voorwaardelijke functie van SASS die op basis van een booleaanse conditie een van twee waarden retourneert. Deze lijkt op de ternary-operator van JavaScript.
Syntax
De syntaxis is als volgt:.
1// if(condition, trueValue, falseValue)- Als
conditionwaar is, retourneert hettrueValue; als het onwaar is, retourneert hetfalseValue.
Basisgebruik
Je kunt de functie if() bijvoorbeeld gebruiken om achtergrond- en tekstkleuren te wijzigen afhankelijk van of het thema donker of licht is.
Voorbeeldcode
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}- Als de variabele
$theme"dark"is, wordt de achtergrond zwart met witte tekst; als deze"light"is, wordt de achtergrond wit met zwarte tekst.
De gegenereerde CSS
1body {
2 background-color: black;
3 color: white;
4}- Omdat de variabele
$theme"dark"is, is de achtergrond zwart met witte tekst.
Verschillen tussen de @if-statement en de if()-functie
Sass biedt een @if-statement en een if()-functie voor conditionele vertakkingen, maar ze worden voor verschillende doeleinden gebruikt.
Voorbeeldcode
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}- De
@if-statement bepaalt welke code wordt gegenereerd tijdens de Sass-compilatie. - Daarentegen retourneert de
if()-functie een waarde en wordt ze gebruikt om binnen expressies dynamisch tussen waarden te schakelen.
De gegenereerde CSS
1body {
2 background-color: black;
3 color: white;
4}- In dit voorbeeld, omdat
$theme"dark"is, worden een zwarte achtergrond en een witte tekstkleur toegepast. - De twee belangrijkste verschillen zijn dat de
@if-statement de structuur aanstuurt en dat deif()-functie een waarde retourneert.
Gebruik van geneste if-functies
Wanneer je complexe vertakkingen nodig hebt, kun je if-functies nesten.
Voorbeeldcode
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}- Als
$theme"dark"is, retourneert het zwart; als het"light"is, retourneert het wit; anders retourneert het de standaardwaarde ($custom-color).
De gegenereerde CSS
1body {
2 background-color: blue;
3}- Aangezien de variabele
$themecustomis, is de achtergrondkleur blauw.
Praktische toepassingen
Thema wisselen
Hieronder staat een voorbeeld dat knopstijlen wijzigt op basis van het thema.
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}- Deze code is een SASS-voorbeeld van conditionele logica dat de achtergrond-, tekst- en randkleuren van een knop wisselt op basis van de waarde van de variabele
$theme. De functieif()wordt gebruikt om dynamisch stijlen in te stellen voor donkere en lichte thema's.
De gegenereerde CSS
1.button {
2 background-color: #333;
3 color: #fff;
4 border: 1px solid #444;
5}- Door het thema te wisselen kun je het algehele ontwerp uniform wijzigen.
Gevorderd voorbeeld: kleurcontrast dynamisch instellen
Laten we een voorbeeld bekijken dat automatisch de tekstkleur instelt op basis van de achtergrondkleur.
Voorbeeldcode
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}- De functie
color.channel()wordt gebruikt om de lichtheid (lightness) van de achtergrondkleur op te halen. Als die waarde groter is dan50%, wordt zwart gekozen; is deze kleiner, dan wordt wit als tekstkleur gekozen, waarmee het contrast met de achtergrond automatisch wordt geoptimaliseerd.
De gegenereerde CSS
1body {
2 background-color: #000;
3 color: white;
4}- Door de
if()-functie te gebruiken, kun je flexibele stijlen implementeren die rekening houden met toegankelijkheid, zoals het aanpassen van het contrast.
Combineren met @function
Het gebruik van de if-functie binnen een @function maakt nog flexibeler stijlontwerp mogelijk.
Voorbeeldcode
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}- Deze code demonstreert het gebruik van
if()binnen een@functionom geschikte kleuren te retourneren op basis van het thema en het type kleur. Dit maakt een consistent en herbruikbaar stijlontwerp per thema mogelijk.
De gegenereerde CSS
1body {
2 background-color: black;
3 color: white;
4}- Door helperfuncties te maken en te gebruiken die de
if()-functie benutten, kun je de onderhoudbaarheid van het hele project verbeteren.
Notities
-
De
if-functie kan niet met dynamische waarden worden gebruikt Omdat CSS zelf een statische taal is, worden met deif-functie de waarden bepaald op het moment dat SASS wordt gecompileerd. Voor voorwaardelijke logica tijdens runtime moet je JavaScript gebruiken. -
Geef prioriteit aan leesbaarheid Omdat geneste
if-functies complex kunnen worden en de leesbaarheid kunnen schaden, kun je waar nodig SASS@mixinen@functiongebruiken om je code te structureren.
Conclusie
De if-functie van SASS is een krachtig hulpmiddel dat verschillende waarden retourneert afhankelijk van de voorwaarden. De functie is niet alleen nuttig voor eenvoudige condities, maar ook in veel scenario's, zoals themawissel en dynamische stijlinstellingen. Bij complexe voorwaarden moet je letten op de leesbaarheid en @mixin en @function inzetten om de onderhoudbaarheid te verbeteren.
Door de if-functie onder de knie te krijgen, kun je een efficiënter en flexibeler stijlontwerp bereiken.
Je kunt het bovenstaande artikel volgen met Visual Studio Code op ons YouTube-kanaal. Bekijk ook het YouTube-kanaal.