Fungsi `if` dalam SASS
Artikel ini menerangkan fungsi if dalam SASS.
Kami akan membincangkan segala-galanya daripada asas fungsi if hingga teknik lanjutan, langkah demi langkah.
YouTube Video
Fungsi if dalam SASS
Fungsi if() ialah fungsi bersyarat ringkas yang disediakan oleh SASS yang mengembalikan salah satu daripada dua nilai berdasarkan syarat boolean. Ia serupa dengan operator ternari JavaScript.
Sintaks
Sintaks adalah seperti berikut:.
1// if(condition, trueValue, falseValue)- Jika
conditionbenar, ia mengembalikantrueValue; jika palsu, ia mengembalikanfalseValue.
Penggunaan Asas
Sebagai contoh, anda boleh menggunakan fungsi if() untuk menukar warna latar belakang dan teks bergantung pada sama ada tema gelap atau cerah.
Contoh Kod
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}- Jika pemboleh ubah
$themeialah"dark", latar belakang menjadi hitam dengan teks putih; jika"light", latar belakang menjadi putih dengan teks hitam.
CSS yang dijana
1body {
2 background-color: black;
3 color: white;
4}- Oleh kerana pemboleh ubah
$themeialah"dark", latar belakang adalah hitam dengan teks putih.
Perbezaan antara pernyataan @if dan fungsi if()
Sass menyediakan pernyataan @if dan fungsi if() untuk percabangan bersyarat, tetapi kedua-duanya digunakan untuk tujuan yang berbeza.
Contoh Kod
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}- Pernyataan
@ifmengawal kod mana yang dikeluarkan semasa kompilasi Sass. - Sebaliknya, fungsi
if()memulangkan nilai dan digunakan untuk menukar nilai secara dinamik dalam ungkapan.
CSS yang dijana
1body {
2 background-color: black;
3 color: white;
4}- Dalam contoh ini, memandangkan
$themeialah"dark", latar belakang hitam dan warna teks putih digunakan. - Dua perbezaan utama ialah pernyataan
@ifmengawal struktur, manakala fungsiif()memulangkan nilai.
Menggunakan fungsi if bersarang
Apabila anda memerlukan percabangan yang kompleks, anda boleh menyarangkan fungsi if.
Contoh Kod
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}- Jika
$themeialah"dark", ia mengembalikan hitam; jika"light", ia mengembalikan putih; jika tidak, ia mengembalikan nilai lalai ($custom-color).
CSS yang dijana
1body {
2 background-color: blue;
3}- Memandangkan pemboleh ubah
$themeialahcustom, warna latar belakang ialah biru.
Kes penggunaan praktikal
Pertukaran tema
Di bawah ialah contoh yang menukar gaya butang berdasarkan 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}- Kod ini ialah contoh bersyarat SASS yang menukar warna latar belakang, teks dan sempadan butang berdasarkan nilai pemboleh ubah
$theme. Fungsiif()digunakan untuk menetapkan gaya secara dinamik bagi tema gelap dan cerah.
CSS yang dijana
1.button {
2 background-color: #333;
3 color: #fff;
4 border: 1px solid #444;
5}- Dengan menukar tema, anda boleh mengubah reka bentuk keseluruhan secara seragam.
Contoh lanjutan: Menetapkan kontras warna secara dinamik
Mari lihat contoh yang menetapkan warna teks secara automatik berdasarkan warna latar belakang.
Contoh Kod
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}- Fungsi
color.channel()digunakan untuk mendapatkan nilai kecerahan (lightness) warna latar belakang. Jika nilai itu melebihi50%, hitam dipilih; jika lebih kecil, putih dipilih sebagai warna teks, sekali gus mengoptimumkan kontras dengan latar belakang secara automatik.
CSS yang dijana
1body {
2 background-color: #000;
3 color: white;
4}- Dengan menggunakan fungsi
if(), anda boleh melaksanakan gaya yang fleksibel yang mengambil kira kebolehcapaian reka bentuk, seperti melaraskan kontras.
Menggabungkan dengan @function
Penggunaan fungsi if di dalam @function membolehkan reka bentuk gaya yang lebih fleksibel.
Contoh Kod
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}- Kod ini menunjukkan penggunaan
if()dalam@functionuntuk mengembalikan warna yang sesuai berdasarkan tema dan jenis warna. Ini membolehkan reka bentuk gaya yang konsisten dan boleh diguna semula untuk setiap tema.
CSS yang dijana
1body {
2 background-color: black;
3 color: white;
4}- Dengan mencipta dan menggunakan fungsi pembantu yang memanfaatkan fungsi
if(), anda boleh meningkatkan kebolehselenggaraan keseluruhan projek.
Nota
-
Fungsi
iftidak boleh digunakan dengan nilai dinamik Oleh kerana CSS itu sendiri ialah bahasa statik, fungsiifmenentukan nilai semasa SASS dikompil. Untuk logik bersyarat pada masa jalan, anda perlu menggunakan JavaScript. -
Utamakan kebolehbacaan Oleh kerana fungsi
ifyang bersarang boleh menjadi kompleks dan menjejaskan kebolehbacaan, anda boleh menggunakan SASS@mixindan@functionmengikut keperluan untuk menyusun kod anda.
Kesimpulan
Fungsi if SASS ialah alat yang berkuasa yang mengembalikan nilai berbeza bergantung pada syarat. Ia berguna bukan sahaja untuk syarat ringkas, tetapi juga dalam banyak senario seperti pertukaran tema dan tetapan gaya dinamik. Walau bagaimanapun, apabila berurusan dengan syarat yang kompleks, beri perhatian kepada kebolehbacaan dan manfaatkan @mixin serta @function untuk meningkatkan kebolehselenggaraan.
Dengan menguasai fungsi if, anda boleh mencapai reka bentuk gaya yang lebih cekap dan fleksibel.
Anda boleh mengikuti artikel di atas menggunakan Visual Studio Code di saluran YouTube kami. Sila lihat juga saluran YouTube kami.