Modul Terbina Dalam SASS
Artikel ini menerangkan modul terbina dalam SASS.
Kami membincangkan modul terbina dalam SASS langkah demi langkah, daripada asas hingga penggunaan lanjutan.
YouTube Video
Modul Terbina Dalam SASS
SASS menyediakan pelbagai modul terbina dalam, dan menggunakannya menjadikan penulisan stylesheet lebih cekap.
Apakah modul terbina dalam SASS?
Modul terbina dalam SASS ialah modul yang menyediakan fungsi dan mixin yang boleh digunakan semula. Menggunakannya memudahkan pengiraan yang kompleks dan penciptaan gaya tersuai.
Modul terbina dalam utama termasuk yang berikut:.
sass:colorsass:stringsass:mathsass:listsass:mapsass:selectorsass:meta
Setiap modul merangkumi ciri untuk memudahkan tugasan tertentu.
Perincian dan contoh setiap modul
Modul sass:color
Modul sass:color menyediakan fungsi yang memudahkan manipulasi warna.
Fungsi utama
mix(): Menggabungkan dua warnaadjust(): Laraskan rona, kecerahan, ketepuan, dan sifat-sifat lain secara serentak
Contoh penggunaan
1@use "sass:color";
2
3$primary-color: #3498db;
4$secondary-color: #e74c3c;
5
6// Mix two colors with equal weight
7$blended-color: color.mix($primary-color, $secondary-color, 50%);
8
9// Adjust hue by 45 degrees using color.adjust()
10$adjusted-color: color.adjust($primary-color, $hue: 45deg);
11
12div {
13 background-color: $blended-color; // Result of mixing two colors
14 border-color: $adjusted-color; // Hue adjusted by 45 degrees
15}- Kod ini menjana warna baharu dengan mencampurkan dua warna dan satu lagi warna dengan rona yang telah dilaraskan. Warna yang dijana digunakan pada elemen sebagai warna latar belakang dan sempadan. Contoh ini membantu anda memahami asas manipulasi warna.
Modul sass:string
Modul sass:string menyediakan fungsi yang berguna untuk manipulasi rentetan.
Fungsi utama
quote(),unquote(): Menambah atau membuang tanda petik pada rentetanlength(): Mendapatkan panjang rentetanto-upper-case(),to-lower-case(): Menukarkan rentetan kepada huruf besar atau huruf kecil
Contoh penggunaan
1@use "sass:string";
2
3// base values
4$base-url: "https://example.com";
5$path: "/assets/style.css";
6
7// 1) Combine strings using interpolation and then quote the result
8$full-quoted: string.quote("#{$base-url}#{$path}");
9// Example result: "\"https://example.com/assets/style.css\""
10
11// 2) Remove quotes from a quoted string
12$full-unquoted: string.unquote($full-quoted);
13// Example result: https://example.com/assets/style.css
14
15// 3) Get the length of the unquoted string
16$url-length: string.length($full-unquoted);
17// Example output: number of characters in the URL
18
19// 4) Convert strings to upper/lower case and quote for safe CSS output
20$block-name: "main-header";
21// "MAIN-HEADER"
22$upper-quoted: string.quote(string.to-upper-case($block-name));
23// "main-footer"
24$lower-quoted: string.quote(string.to-lower-case("MAIN-FOOTER"));
25
26a::after {
27 /* Use quoted strings for content to ensure valid CSS */
28 content: $full-quoted; /* "https://example.com/assets/style.css" */
29}
30
31:root {
32 /* Insert numeric values with interpolation when needed */
33 --url-length: #{ $url-length }; /* Example: --url-length: 31; */
34}
35
36.header::before {
37 /* Output uppercase version */
38 content: $upper-quoted; /* "MAIN-HEADER" */
39}
40
41.footer::after {
42 /* Output lowercase version */
43 content: $lower-quoted; /* "main-footer" */
44}- Menggunakan
string.quote()danstring.unquote()membolehkan anda mengawal dengan tepat perwakilan rentetan dalam CSS keluaran.string.length()ialah fungsi untuk mendapatkan panjang rentetan.string.to-upper-case()/string.to-lower-case()sangat berguna untuk menjana nama kelas dan memformat nama BEM.
Modul sass:math
Modul sass:math menyediakan fungsi untuk pengiraan matematik.
Fungsi utama
pow(): Pemangkatansqrt(): Punca kuasa duaabs(): Nilai mutlakround(),ceil(),floor(): Membundar, membundarkan ke atas, membundarkan ke bawah
Contoh penggunaan
1@use "sass:math";
2
3// Using pow() to calculate exponential values
4$base-size: math.pow(2, 3) * 10px; // 80px
5
6// Using sqrt() to compute a square root
7$root-size: math.sqrt(144) * 1px; // 12px
8
9// Using abs() to ensure a positive value
10$offset: math.abs(-15px); // 15px
11
12// Using round(), ceil(), and floor() for different rounding methods
13$rounded: math.round(12.6px); // 13px
14$ceiled: math.ceil(12.1px); // 13px
15$floored: math.floor(12.9px); // 12px
16
17.container {
18 width: $base-size; // 80px
19 height: $root-size; // 12px
20 margin-left: $offset; // 15px
21}
22
23.values {
24 /* Demonstrating different rounding operations */
25 padding: $rounded; // 13px
26 border-width: $ceiled; // 13px
27 margin-top: $floored; // 12px
28}math.pow()danmath.sqrt()berguna untuk pengiraan saiz, manakalamath.abs()dan fungsi pembundaran membantu mengendalikan pelarasan. Menggabungkan fungsi-fungsi ini memudahkan pengiraan skala UI yang konsisten.
Modul sass:list
Modul sass:list menyediakan fungsi khusus untuk operasi senarai.
Fungsi utama
append(): Tambah elemenjoin(): Menggabungkan senarainth(): Mendapatkan elemen pada kedudukan tertentulength(): Mendapatkan panjang senarai
Contoh penggunaan
1@use "sass:list";
2
3// Base list
4$colors: ("red", "blue", "green");
5
6// Add an element to the end of the list
7$colors-appended: list.append($colors, "yellow");
8// ("red", "blue", "green", "yellow")
9
10// Add an element to the beginning of the list using join()
11$colors-prepended: list.join(("black",), $colors);
12// ("black", "red", "blue", "green", "yellow")
13
14// Join two lists together
15$extra-colors: ("pink", "cyan");
16$merged-colors: list.join($colors-prepended, $extra-colors);
17// ("black", "red", "blue", "green", "yellow", "pink", "cyan")
18
19// Get list length
20$total-length: list.length($merged-colors);
21
22// Example usage in a loop: assign each color to a list item
23ul {
24 @for $i from 1 through $total-length {
25 li:nth-child(#{$i}) {
26 /* Get the color at index $i */
27 color: list.nth($merged-colors, $i);
28 }
29 }
30}- Anda boleh menambah elemen ke hujung senarai dengan
append(), dan menggunakanjoin()untuk menggabungkan berbilang senarai secara fleksibel. Jika anda mahu menambah elemen di permulaan, anda boleh melakukannya dengan menggabungkan senarai satu elemen ke hadapan menggunakanjoin(). Dengan menggabungkanlength()dannth(), lebih mudah untuk menjana gaya UI yang memerlukan pemprosesan senarai dinamik.
Modul sass:map
Modul sass:map menyediakan fungsi untuk bekerja dengan map (tatasusunan bersekutu).
Fungsi utama
get(): Mendapatkan nilai bagi kunciset(): Menambah atau mengemas kini pasangan kunci-nilaikeys(): Mendapatkan semua kunci
Contoh penggunaan
1@use "sass:map";
2
3// Base theme map
4$theme-colors: (
5 "primary": #3498db,
6 "secondary": #e74c3c
7);
8
9// Update or add a value using set()
10$updated-theme: map.set($theme-colors, "warning", #f1c40f);
11// Map now has "warning": #f1c40f added
12
13// Get a value from the map
14$primary-color: map.get($updated-theme, "primary");
15
16// Get all keys from the map
17$all-keys: map.keys($updated-theme);
18// Example: ("primary", "secondary", "warning")
19
20button {
21 /* Apply color retrieved from the theme map */
22 background-color: $primary-color;
23}
24
25.debug {
26 /* Print keys as content for demonstration */
27 content: "#{$all-keys}";
28}- Menggunakan
map.set()membolehkan anda mengemas kini map secara dinamik, dan digabungkan denganmap.get()anda boleh membina struktur tema yang fleksibel. Denganmap.keys()anda boleh menyenaraikan entri konfigurasi, yang membantu dalam mereka bentuk gaya yang boleh diperluas.
Modul sass:selector
Modul sass:selector menyediakan fungsi yang berguna untuk manipulasi pemilih.
Fungsi utama
nest(): Menganak-sarangkan pemilihis-superselector(): Menyemak pengandungan pemilihreplace(): Menggantikan pemilih
Contoh penggunaan
1@use "sass:selector";
2
3// Nest selectors (combine parent and child)
4$nested-selector: selector.nest(".parent", ".child");
5// Result: ".parent .child"
6
7// Check if one selector is a superselector of another
8$is-super: selector.is-superselector(".parent", $nested-selector);
9// true because ".parent" matches all elements that
10// ".parent .child" can match as an ancestor
11
12// Replace part of a selector with another selector
13$replaced-selector: selector.replace(".parent .child", ".child", ".item");
14// Result: ".parent .item"
15
16// Use generated selectors in actual CSS output
17#{$nested-selector} {
18 /* Applies to .parent .child */
19 color: red;
20}
21
22@if $is-super {
23 .info::after {
24 /* Demonstrate boolean result */
25 content: "parent is a superselector";
26 }
27}
28
29#{$replaced-selector} {
30 /* Applies to .parent .item */
31 background: blue;
32}- Gunakan
selector.nest()untuk menggubah pemilih dengan fleksibel danselector.is-superselector()untuk mengesahkan hubungan antara pemilih. Gabungkan denganselector.replace()untuk mengendalikan logik penjanaan pemilih lanjutan dengan ringkas.
Modul sass:meta
Modul sass:meta menyediakan ciri yang berguna untuk pengaturcaraan meta dalam SASS.
Fungsi utama
variable-exists(): Menyemak sama ada pembolehubah wujudglobal-variable-exists(): Menyemak sama ada pembolehubah global wujudinspect(): Memaparkan nilai untuk nyahpepijat
Contoh penggunaan
1@use "sass:meta";
2
3// Define a global variable
4$color: #3498db;
5
6// Check if a variable exists in the current scope
7@if meta.variable-exists("color") {
8 body {
9 /* Apply style only if $color exists */
10 background-color: $color;
11 }
12}
13
14// Create a local variable inside a block
15.container {
16 $local-size: 20px;
17
18 @if meta.variable-exists("local-size") {
19 /* Demonstrates detection of local variable */
20 width: $local-size;
21 }
22}
23
24// Check if a global variable exists
25$result: meta.global-variable-exists("color"); // true
26
27.debug {
28 /* Use inspect() to output the inspected value as a string */
29 content: meta.inspect($result); // "true"
30}meta.variable-exists()danmeta.global-variable-exists()membolehkan anda menentukan keadaan pembolehubah mengikut skop dengan selamat.meta.inspect()sangat berguna untuk nyahpepijat dan boleh memaparkan nilai sebagai rentetan.
Contoh praktikal
Menggabungkan pelbagai modul terbina dalam lagi meningkatkan keupayaan ekspresif SASS. Di bawah ialah contoh yang menggunakan modul color, math, dan list bersama-sama untuk mengautomasikan pemprosesan warna dan operasi senarai.
1@use "sass:color";
2@use "sass:math";
3@use "sass:list";
4
5// Base color list
6$base-colors: (#3498db, #e74c3c, #2ecc71);
7$darkened-colors: (); // Empty list for processed colors
8
9// Loop through each base color and darken it by 10%
10@each $color in $base-colors {
11 $darkened-colors: list.append(
12 $darkened-colors,
13 // Darken color by decreasing lightness by 10%
14 color.adjust($color, $lightness: -10%)
15 );
16}
17
18div {
19 // Apply each processed color to a corresponding <div>
20 @for $i from 1 through list.length($darkened-colors) {
21 &:nth-child(#{$i}) {
22 // Set color by index
23 background-color: list.nth($darkened-colors, $i);
24 }
25 }
26}- Dalam kod ini, warna yang telah diproses ditambah secara berurutan dengan
list.append(), dancolor.adjust()dengan$lightness: -10%digunakan untuk menggelapkan warna sebanyak 10%. Akhirnya,@fordigabungkan denganlist.nth()untuk menggunakan warna latar yang berbeza pada setiap<div>.
Ringkasan
Modul terbina dalam SASS sangat meningkatkan fleksibiliti CSS. Dengan memahami setiap modul dan menggunakannya dengan sewajarnya, anda boleh menghasilkan stylesheet yang lebih cekap dan mudah diselenggara.
Anda boleh mengikuti artikel di atas menggunakan Visual Studio Code di saluran YouTube kami. Sila lihat juga saluran YouTube kami.