Ang `if` function sa SASS
Ipinaliliwanag ng artikulong ito ang if function sa SASS.
Tatalakayin natin ang lahat mula sa mga batayan ng if function hanggang sa mga advanced na teknik, hakbang-hakbang.
YouTube Video
Ang if function sa SASS
Ang if() ay isang payak na conditional function na ibinibigay ng SASS na nagbabalik ng isa sa dalawang halaga batay sa isang boolean na kondisyon. Kahawig ito ng ternary operator sa JavaScript.
Sintaks
Ganito ang syntax:.
1// if(condition, trueValue, falseValue)- Kung ang
conditionay true, ibinabalik nito angtrueValue; kung false, ibinabalik nito angfalseValue.
Pangunahing Paggamit
Halimbawa, maaari mong gamitin ang if() function upang baguhin ang mga kulay ng background at teksto depende kung dark o light ang tema.
Halimbawang Kodigo
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}- Kung ang variable na
$themeay"dark", magiging itim ang background na may puting teksto; kung"light", magiging puti ang background na may itim na teksto.
Ang nalikhang CSS
1body {
2 background-color: black;
3 color: white;
4}- Dahil ang variable na
$themeay"dark", ang background ay itim na may puting teksto.
Mga pagkakaiba sa pagitan ng statement na @if at ng function na if()
Nagbibigay ang Sass ng statement na @if at ng function na if() para sa conditional branching, ngunit ginagamit ang mga ito para sa iba’t ibang layunin.
Halimbawang Kodigo
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}- Kinokontrol ng statement na
@ifkung aling code ang ilalabas sa oras ng pag-compile ng Sass. - Samantala, ang function na
if()ay nagbabalik ng isang halaga at ginagamit upang magpalit ng mga halaga nang dinamiko sa loob ng mga expression.
Ang nalikhang CSS
1body {
2 background-color: black;
3 color: white;
4}- Sa halimbawang ito, dahil ang
$themeay"dark", ilalapat ang itim na background at puting kulay ng teksto. - Ang dalawang pangunahing pagkakaiba ay: ang statement na
@ifang kumokontrol sa istruktura, at ang function naif()ay nagbabalik ng isang halaga.
Paggamit ng nested na mga if function
Kapag kailangan mo ng kumplikadong branching, maaari mong i-nest ang mga if function.
Halimbawang Kodigo
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}- Kung ang
$themeay"dark", ibinabalik nito ang itim; kung"light", ibinabalik ang puti; kung hindi, ibinabalik ang default na halaga ($custom-color).
Ang nalikhang CSS
1body {
2 background-color: blue;
3}- Dahil ang variable na
$themeaycustom, asul ang kulay ng background.
Mga praktikal na paggamit
Pagpapalit ng tema
Narito ang isang halimbawa na nagpapalit ng mga estilo ng button batay sa tema.
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}- Ang code na ito ay isang halimbawa ng SASS conditional na nagpapalit ng mga kulay ng background, teksto, at border ng button batay sa halaga ng variable na
$theme. Ginagamit angif()function upang dynamic na itakda ang mga estilo para sa dark at light na mga tema.
Ang nalikhang CSS
1.button {
2 background-color: #333;
3 color: #fff;
4 border: 1px solid #444;
5}- Sa pamamagitan ng pagpapalit ng tema, maaari mong baguhin nang pare-pareho ang kabuuang disenyo.
Advanced na halimbawa: Dynamic na pagtatakda ng contrast ng kulay
Tingnan natin ang isang halimbawa na awtomatikong nagtatalaga ng kulay ng teksto batay sa kulay ng background.
Halimbawang Kodigo
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}- Ginagamit ang function na
color.channel()upang makuha ang lightness ng kulay ng background (lightness). Kung ang halagang iyon ay mas malaki sa50%, itim ang pipiliin; kung mas maliit, puti ang pipiliin bilang kulay ng teksto, na awtomatikong pinapainam ang contrast sa background.
Ang nalikhang CSS
1body {
2 background-color: #000;
3 color: white;
4}- Sa pamamagitan ng paggamit ng function na
if(), maaari kang magpatupad ng mga flexible na estilo na isinasaalang-alang ang accessibility ng disenyo, gaya ng pagsasaayos ng contrast.
Pagsasama sa @function
Ang paggamit ng if function sa loob ng isang @function ay nagbibigay-daan sa mas flexible na disenyo ng mga estilo.
Halimbawang Kodigo
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}- Ipinapakita ng code na ito ang paggamit ng
if()sa loob ng isang@functionupang magbalik ng angkop na mga kulay batay sa tema at uri ng kulay. Nagbibigay-daan ito sa pare-pareho at muling nagagamit na disenyo ng mga estilo para sa bawat tema.
Ang nalikhang CSS
1body {
2 background-color: black;
3 color: white;
4}- Sa paglikha at paggamit ng mga helper function na nakikinabang sa function na
if(), mapapabuti mo ang maintainability ng buong proyekto.
Mga Tala
-
Hindi magagamit ang
iffunction sa mga dynamic na halaga Dahil ang CSS mismo ay isang static na wika, tinutukoy ngiffunction ang mga halaga sa oras ng pag-compile ng SASS. Para sa conditional logic sa runtime, kailangan mong gumamit ng JavaScript. -
Unahin ang readability Dahil ang mga
iffunction na naka-nest ay maaaring maging kumplikado at makabawas sa pagiging madaling basahin, maaari mong gamitin ang SASS@mixinat@functionkung kinakailangan upang ayusin ang iyong code.
Konklusyon
Ang if function ng SASS ay isang makapangyarihang kasangkapan na nagbabalik ng iba't ibang halaga depende sa mga kondisyon. Kapaki-pakinabang ito hindi lamang para sa mga simpleng conditional, kundi pati na rin sa maraming sitwasyon tulad ng pagpapalit ng tema at dynamic na pagtatakda ng mga estilo. Gayunman, kapag humaharap sa mga kumplikadong kondisyon, bigyang-pansin ang readability at gamitin ang @mixin at @function upang mapabuti ang maintainability.
Sa paghasa sa if function, makakamit mo ang mas episyente at mas flexible na disenyo ng mga estilo.
Maaari mong sundan ang artikulo sa itaas gamit ang Visual Studio Code sa aming YouTube channel. Paki-check din ang aming YouTube channel.