SASS 中的字串

SASS 中的字串

本文說明了 SASS 中的字串。

我們將會一步步說明 SASS 中字串的基本操作以及進階用法。

YouTube Video

SASS 中的字串

SASS 是一種用於擴展 CSS 的預處理器,而字串則是讓樣式定義更加靈活和動態的重要元素。

字串的基礎知識

SASS 中的字串可以用單引號或雙引號包圍,有時也可以省略引號,直接像識別字一樣書寫。以下是基本的寫法範例。

1// Single quotes
2$single-quoted: 'Hello, World!';
3// Double quotes
4$double-quoted: "Hello, World!";
5// No quotes
6$unquoted: Hello-World;

注意事項

  • 有引號的字串會直接被視為字串常值。
  • 沒有引號的字串通常會被當作 CSS 樣式的 class 名稱或 ID 處理,需注意適當使用。

字串合併

在 SASS 中你可以用 + 運算子來合併字串。

1$greeting: "Hello";
2$name: "Alice";
3
4$result: $greeting + ", " + $name + "!"; // "Hello, Alice!"
  • 以下程式碼範例展示了如何利用 SASS 的 + 運算子將多個字串合併成新字串。

進階範例:產生類別名稱

1$base-class: "btn";
2$modifier: "primary";
3
4.class-name {
5    content: $base-class + "--" + $modifier; // "btn--primary"
6}
  • 此程式碼範例說明如何用 SASS 的 + 運算子將基礎類別名稱和修飾詞結合,產生新的類別名稱。

使用字串函式

SASS 提供了許多方便的內建字串函式,例如引號控制及子字串擷取。

quote()unquote()

透過 quote()unquote() 函式,可以為字串加上或移除引號。

1$quoted: quote(Hello);    // '"Hello"'
2$unquoted: unquote("Hello"); // Hello

str-length($string)

str-length() 函式可以取得字串的長度。

1$length: str-length("Hello"); // 5

str-insert($string, $insert, $index)

str-insert() 函式可以在指定位置插入字串。

1$result: str-insert("Hello", " SASS", 6); // "Hello SASS"

str-slice($string, $start-at, [$end-at])

str-slice() 函式可以擷取字串的一部分。

1$substring: str-slice("Hello, World!", 1, 5); // "Hello"

to-upper-case()to-lower-case()

to-upper-case()to-lower-case() 這兩個函式分別可以將字串轉換為大寫或小寫。

1$upper: to-upper-case("sass"); // "SASS"
2$lower: to-lower-case("SASS"); // "sass"

條件式中的字串運用

利用 SASS 的 @if 指令,你可以根據字串值進行條件分支,根據主題和設定靈活切換樣式。

 1$theme: "dark";
 2
 3@if $theme == "dark" {
 4  body {
 5    background-color: black;
 6    color: white;
 7  }
 8} @else {
 9  body {
10    background-color: white;
11    color: black;
12  }
13}
  • 此程式碼範例為如何用 SASS 的 @if 指令判斷主題是否為 dark,並做出相對應的樣式切換。

實用範例:動態生成背景圖片路徑

以下範例展示如何用字串操作生成背景圖片的網址。

1$image-path: "/images/";
2$image-name: "background";
3$image-extension: ".jpg";
4
5.background {
6    background-image: url($image-path + $image-name + $image-extension);
7}

編譯結果

1.background {
2    background-image: url("/images/background.jpg");
3}
  • 這段範例展示了如何在 SASS 中合併字串,動態生成背景圖片路徑並套用於背景。

結合 List 與 Map 運用

結合 SASS 的 List、Map 與字串操作,可讓樣式產生更加靈活。

List 範例

1$states: "hover", "focus", "active";
2
3@each $state in $states {
4    .btn-#{$state} {
5        content: "Button in " + $state + " state";
6    }
7}

編譯結果

1.btn-hover {
2    content: "Button in hover state";
3}
4.btn-focus {
5    content: "Button in focus state";
6}
7.btn-active {
8    content: "Button in active state";
9}
  • 此程式碼範例說明如何用 SASS 的 @each 指令,為清單中的每個狀態自動生成類別,並利用字串合併動態設置內容。

Map 範例

 1$colors: (
 2    "primary": "#3498db",
 3    "secondary": "#2ecc71"
 4);
 5
 6@each $name, $color in $colors {
 7    .text-#{$name} {
 8        color: $color;
 9    }
10}

編譯結果

1.text-primary {
2    color: #3498db;
3}
4.text-secondary {
5    color: #2ecc71;
6}
  • 此程式碼範例說明如何透過 SASS 的 Map 將顏色名稱與值關聯,再利用 @each 指令自動產生各個類別。

字串跳脫

為了安全地將某些字串作為 CSS 識別字,可能需要加以跳脫。

1$special_character: "example\\@123";
2.#{$special_character} {
3  content: "This is a valid CSS class.";
4}

編譯結果

1.example\@123 {
2    content: "This is a valid CSS class.";
3}
  • 此程式碼範例展示如何在 SASS 中將包含特殊字元的字串作為變數,使用 #{$variable} 展開,並將其作為 CSS 中的有效類名使用。

結論

SASS 中的字串操作不僅僅是書寫字串常值,更是動態構建樣式的強大利器。善用本篇介紹的基本操作與函式,能夠讓你的 CSS 更具重用性與可維護性,同時提升設計效率。

您可以在我們的 YouTube 頻道上使用 Visual Studio Code 來跟隨上述文章一起學習。 請也查看我們的 YouTube 頻道。

YouTube Video