Các mô-đun tích hợp sẵn của SASS

Các mô-đun tích hợp sẵn của SASS

Bài viết này giải thích về các mô-đun tích hợp sẵn của SASS.

Chúng tôi trình bày các mô-đun tích hợp sẵn của SASS theo từng bước, từ cơ bản đến nâng cao.

YouTube Video

Các mô-đun tích hợp sẵn của SASS

SASS cung cấp nhiều mô-đun tích hợp sẵn; sử dụng chúng giúp việc viết stylesheet hiệu quả hơn nữa.

Các mô-đun tích hợp sẵn của SASS là gì?

Các mô-đun tích hợp sẵn của SASS là những mô-đun cung cấp các hàm và mixin có thể tái sử dụng. Việc sử dụng chúng giúp các phép tính phức tạp và việc tạo kiểu tùy biến trở nên dễ dàng hơn.

Các mô-đun tích hợp sẵn chính bao gồm:.

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

Mỗi mô-đun bao gồm các tính năng để tối ưu hóa những tác vụ cụ thể.

Chi tiết và ví dụ về từng mô-đun

Mô-đun sass:color

Mô-đun sass:color cung cấp các hàm giúp thao tác màu sắc trở nên dễ dàng.

Các hàm chính
  • mix(): Trộn hai màu
  • adjust(): Điều chỉnh đồng thời tông màu, độ sáng, độ bão hòa và các thuộc tính khác
Ví dụ sử dụng
 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}
  • Đoạn mã này tạo ra một màu mới bằng cách trộn hai màu và một màu khác đã được điều chỉnh sắc độ. Các màu được tạo sẽ được áp dụng cho các phần tử làm màu nền và màu viền. Ví dụ này giúp bạn nắm được những kiến thức cơ bản về thao tác màu sắc.

Mô-đun sass:string

Mô-đun sass:string cung cấp các hàm hữu ích cho việc thao tác chuỗi.

Các hàm chính
  • quote(), unquote(): Thêm hoặc bỏ dấu ngoặc kép cho chuỗi
  • length(): Lấy độ dài của chuỗi
  • to-upper-case(), to-lower-case(): Chuyển chuỗi sang chữ hoa hoặc chữ thường
Ví dụ sử dụng
 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}
  • Sử dụng string.quote()string.unquote() giúp bạn kiểm soát chính xác cách biểu diễn chuỗi trong CSS xuất ra. string.length() là hàm để lấy độ dài của chuỗi. string.to-upper-case() / string.to-lower-case() rất hữu ích để tạo tên lớp và định dạng tên theo BEM.

Mô-đun sass:math

Mô-đun sass:math cung cấp các hàm cho các phép tính toán học.

Các hàm chính
  • pow(): Lũy thừa
  • sqrt(): Căn bậc hai
  • abs(): Giá trị tuyệt đối
  • round(), ceil(), floor(): Làm tròn, làm tròn lên, làm tròn xuống
Ví dụ sử dụng
 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()math.sqrt() hữu ích cho việc tính toán kích thước, trong khi math.abs() và các hàm làm tròn giúp xử lý việc điều chỉnh. Kết hợp các hàm này giúp dễ dàng tính toán các thang đo UI nhất quán.

Mô-đun sass:list

Mô-đun sass:list cung cấp các hàm chuyên cho thao tác danh sách.

Các hàm chính
  • append(): Thêm phần tử
  • join(): Nối các danh sách
  • nth(): Lấy phần tử tại vị trí cho trước
  • length(): Lấy độ dài của danh sách
Ví dụ sử dụng
 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}
  • Bạn có thể thêm các phần tử vào cuối danh sách với append(), và sử dụng join() để linh hoạt kết hợp nhiều danh sách lại với nhau. Nếu bạn muốn thêm một phần tử vào đầu danh sách, bạn có thể thực hiện bằng cách nối một danh sách gồm một phần tử vào phía trước bằng join(). Bằng cách kết hợp length()nth(), bạn sẽ dễ dàng hơn trong việc tạo ra các kiểu giao diện người dùng cần xử lý danh sách một cách linh hoạt.

Mô-đun sass:map

Mô-đun sass:map cung cấp các hàm làm việc với map (mảng kết hợp).

Các hàm chính
  • get(): Lấy giá trị theo khóa
  • set(): Thêm hoặc cập nhật một cặp khóa-giá trị
  • keys(): Lấy toàn bộ khóa
Ví dụ sử dụng
 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}
  • Sử dụng map.set() cho phép bạn cập nhật map một cách động, và kết hợp với map.get() bạn có thể xây dựng cấu trúc chủ đề linh hoạt. Với map.keys() bạn có thể liệt kê các mục cấu hình, điều này giúp thiết kế các style có thể mở rộng.

Mô-đun sass:selector

Mô-đun sass:selector cung cấp các hàm hữu ích cho việc thao tác selector.

Các hàm chính
  • nest(): Lồng các selector
  • is-superselector(): Kiểm tra sự bao hàm giữa các selector
  • replace(): Thay thế selector
Ví dụ sử dụng
 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}
  • Dùng selector.nest() để kết hợp selector linh hoạt và selector.is-superselector() để xác minh mối quan hệ giữa chúng. Kết hợp với selector.replace() để xử lý gọn gàng các logic sinh selector nâng cao.

Mô-đun sass:meta

Mô-đun sass:meta cung cấp các tính năng hữu ích cho siêu lập trình trong SASS.

Các hàm chính
  • variable-exists(): Kiểm tra biến có tồn tại hay không
  • global-variable-exists(): Kiểm tra biến toàn cục có tồn tại hay không
  • inspect(): Hiển thị giá trị để gỡ lỗi
Ví dụ sử dụng
 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()meta.global-variable-exists() cho phép bạn xác định trạng thái biến theo từng phạm vi một cách an toàn. meta.inspect() rất hữu ích cho việc gỡ lỗi và có thể hiển thị giá trị dưới dạng chuỗi.

Ví dụ thực tế

Kết hợp nhiều mô-đun tích hợp sẵn còn tăng thêm khả năng biểu đạt của SASS. Dưới đây là ví dụ sử dụng cùng lúc các mô-đun color, mathlist để tự động hóa xử lý màu và thao tác danh sách.

 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}
  • Trong đoạn mã này, các màu đã xử lý được thêm tuần tự với list.append(), và color.adjust() với $lightness: -10% được sử dụng để làm tối màu đi 10%. Cuối cùng, @for được kết hợp với list.nth() để áp dụng các màu nền khác nhau cho mỗi <div>.

Tóm tắt

Các mô-đun tích hợp sẵn của SASS làm tăng đáng kể tính linh hoạt của CSS. Bằng cách hiểu từng mô-đun và sử dụng đúng cách, bạn có thể tạo ra các stylesheet hiệu quả và dễ bảo trì hơn.

Bạn có thể làm theo bài viết trên bằng cách sử dụng Visual Studio Code trên kênh YouTube của chúng tôi. Vui lòng ghé thăm kênh YouTube.

YouTube Video