Mga Built-in na Module ng SASS

Mga Built-in na Module ng SASS

Ipinaliliwanag ng artikulong ito ang mga built-in na module ng SASS.

Tatalakayin namin ang mga built-in na module ng SASS nang sunod-sunod, mula sa batayan hanggang sa mas advanced na paggamit.

YouTube Video

Mga Built-in na Module ng SASS

Nagbibigay ang SASS ng iba't ibang built-in na module, at mas pinaiigting ng paggamit nito ang kahusayan sa paggawa ng stylesheet.

Ano ang mga built-in na module ng SASS?

Ang mga built-in na module ng SASS ay mga module na naglalaman ng mga reusable na function at mga mixin. Ang paggamit nito ay nagpapadali ng masalimuot na kalkulasyon at paglikha ng mga custom na estilo.

Kabilang sa mga pangunahing built-in na module ang mga sumusunod:.

  • sass:color
  • sass:string
  • sass:math
  • sass:list
  • sass:map
  • sass:selector
  • sass:meta

Bawat module ay may mga tampok na nagpapasimple ng mga tiyak na gawain.

Mga detalye at halimbawa ng bawat module

Ang module na sass:color

Nagbibigay ang sass:color ng mga function na nagpapadali sa pagmamanipula ng kulay.

Pangunahing mga function
  • mix(): Paghahaluin ang dalawang kulay
  • adjust(): Ayusin ang hue, liwanag, saturation, at iba pang katangian nang sabay-sabay
Halimbawa ng paggamit
 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}
  • Gumagawa ang code na ito ng bagong kulay sa pamamagitan ng paghahalo ng dalawang kulay at isa pang kulay na may inayos na hue. Ang mga nabuo na kulay ay inilalapat sa mga elemento bilang mga kulay ng background at border. Tinutulungan ka ng halimbawang ito na maunawaan ang mga pangunahing kaalaman sa pagmamanipula ng kulay.

Ang module na sass:string

Nagbibigay ang sass:string ng mga function na kapaki-pakinabang para sa pagmamanipula ng string.

Pangunahing mga function
  • quote(), unquote(): Lagyan o tanggalan ng quote ang isang string
  • length(): Kunin ang haba ng isang string
  • to-upper-case(), to-lower-case(): I-convert ang isang string sa upper o lower case
Halimbawa ng paggamit
 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}
  • Sa paggamit ng string.quote() at string.unquote(), maaari mong kontrolin nang eksakto ang representasyon ng string sa output na CSS. Ang string.length() ay isang function na kumukuha ng haba ng isang string. Ang string.to-upper-case() / string.to-lower-case() ay kapaki-pakinabang sa pagbuo ng mga pangalan ng class at pag-format ng mga pangalang BEM.

Ang module na sass:math

Nagbibigay ang sass:math ng mga function para sa mga kalkulasyong matematikal.

Pangunahing mga function
  • pow(): Eksponentiation
  • sqrt(): Ugat na parisukat
  • abs(): Ganap na halaga
  • round(), ceil(), floor(): Mag-round, i-round pataas, i-round pababa
Halimbawa ng paggamit
 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}
  • Ang math.pow() at math.sqrt() ay kapaki-pakinabang para sa mga kalkulasyon ng sukat, habang ang math.abs() at ang mga rounding function ay tumutulong sa paghawak ng mga pagsasaayos. Ang pagsasama-sama ng mga ito ay nagpapadali sa pagkalkula ng magkakapare-parehong sukat ng UI.

Ang module na sass:list

Nagbibigay ang sass:list ng mga function na espesyalisado para sa mga operasyong pang-listahan.

Pangunahing mga function
  • append(): Magdagdag ng mga elemento
  • join(): Pagsamahin ang mga listahan
  • nth(): Kunin ang elemento sa ibinigay na posisyon
  • length(): Kunin ang haba ng isang listahan
Halimbawa ng paggamit
 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}
  • Maaari kang magdagdag ng mga elemento sa dulo ng isang listahan gamit ang append(), at gamitin ang join() upang flexible na pagsamahin ang maraming mga listahan. Kung gusto mong magdagdag ng elemento sa simula, magagawa mo ito sa pamamagitan ng pagsali ng listahang may isang elemento sa unahan gamit ang join(). Sa pamamagitan ng pagsasama ng length() at nth(), mas nagiging madali ang paggawa ng mga UI style na nangangailangan ng dynamic na pagproseso ng listahan.

Ang module na sass:map

Nagbibigay ang sass:map ng mga function para magtrabaho sa mga map (associative array).

Pangunahing mga function
  • get(): Kunin ang halaga para sa isang key
  • set(): Magdagdag o mag-update ng key-value na pares
  • keys(): Kunin ang lahat ng key
Halimbawa ng paggamit
 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}
  • Sa paggamit ng map.set(), maaari mong i-update ang mga map nang dinamiko, at kapag pinagsama sa map.get() makakabuo ka ng mga flexible na istruktura ng tema. Sa map.keys() maaari mong ilista ang mga entry ng configuration, na nakatutulong sa pagdisenyo ng mga istilong madaling palawakin.

Ang module na sass:selector

Nagbibigay ang sass:selector ng mga function na kapaki-pakinabang para sa pagmamanipula ng selector.

Pangunahing mga function
  • nest(): I-nest ang mga selector
  • is-superselector(): Suriin ang pagsaklaw ng selector
  • replace(): Palitan ang mga selector
Halimbawa ng paggamit
 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}
  • Gamitin ang selector.nest() para malayang bumuo ng mga selector at ang selector.is-superselector() para beripikahin ang ugnayan ng mga ito. Pagsamahin sa selector.replace() upang mas maikli mong mahawakan ang mas advanced na lohika sa pagbuo ng selector.

Ang module na sass:meta

Nagbibigay ang sass:meta ng mga tampok na kapaki-pakinabang para sa meta-programming sa SASS.

Pangunahing mga function
  • variable-exists(): Suriin kung umiiral ang isang variable
  • global-variable-exists(): Suriin kung umiiral ang isang global na variable
  • inspect(): Ipakita ang halaga para sa pag-debug
Halimbawa ng paggamit
 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}
  • Ang meta.variable-exists() at meta.global-variable-exists() ay nagbibigay-daan upang ligtas mong matukoy ang estado ng mga variable kada saklaw. Ang meta.inspect() ay napakakapaki-pakinabang para sa pag-debug at maaaring magpakita ng mga halaga bilang mga string.

Praktikal na halimbawa

Ang pagsasama ng maraming built-in na module ay lalo pang pinahuhusay ang ekspresibidad ng SASS. Nasa ibaba ang isang halimbawa na sabay na gumagamit ng mga module na color, math, at list upang awtomatikuhin ang pagproseso ng kulay at mga operasyong pang-listahan.

 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}
  • Sa code na ito, ang mga na-prosesong kulay ay idinadagdag ng sunud-sunod gamit ang list.append(), at ang color.adjust() na may $lightness: -10% ay ginagamit upang padilimin ang mga kulay ng 10%. Sa huli, pinagsasama ang @for at list.nth() upang maglapat ng magkakaibang kulay ng background sa bawat <div>.

Buod

Malaki ang naidudulot na pagiging nababaluktot sa CSS ng mga built-in na module ng SASS. Sa pag-unawa sa bawat module at wastong paggamit nito, makalilikha ka ng mas episyente at mas madaling panatilihing mga stylesheet.

Maaari mong sundan ang artikulo sa itaas gamit ang Visual Studio Code sa aming YouTube channel. Paki-check din ang aming YouTube channel.

YouTube Video