文章

CSS 變數

CSS 變數

CSS 變數(也稱為自定義屬性)使得在樣式表中使用變量來存儲值變得可能。這些變數可以在整個樣式表中重複使用,並且可以根據需要靈活地更改,使得樣式更加一致、可維護和可重複使用。

1. 定義 CSS 變數

CSS 變數的語法很簡單。變數名稱通常以兩個連字號 (--) 開頭,並且可以在任何選擇器的作用域中定義。

語法

1
2
3
:root {
    --變數名稱: 變數值;
}
  • :root 是一個全局選擇器,通常用於定義全局變數。
  • --變數名稱 是自定義變數的名稱。
  • 變數值 是你希望賦予變數的 CSS 值。

範例

定義一些全局變數以用於顏色和間距:

1
2
3
4
5
6
:root {
    --primary-color: #3498db;
    --secondary-color: #2ecc71;
    --font-size-large: 20px;
    --padding-small: 10px;
}

在這個範例中,我們定義了幾個常用的變數(如主色、次色、字體大小和內距)。這些變數現在可以在整個樣式表中使用。

2. 使用 CSS 變數

要使用 CSS 變數,需要使用 var() 函數來調用變數。

語法

1
property: var(--變數名稱);

範例

使用前面定義的變數來設置按鈕的樣式:

1
2
3
4
5
6
7
8
9
.button {
    background-color: var(--primary-color);
    color: white;
    font-size: var(--font-size-large);
    padding: var(--padding-small);
    border: none;
    border-radius: 5px;
    cursor: pointer;
}

在這個範例中,.button 元素使用了 --primary-color 作為背景顏色,--font-size-large 作為字體大小,--padding-small 作為內距。

3. 局部變數

CSS 變數也可以在更具體的作用域內定義和使用,例如在特定的選擇器中。這樣,變數的作用範圍就限制在該選擇器及其子元素內。

範例

在一個特定的容器中定義局部變數:

1
2
3
4
5
6
7
8
9
.container {
    --container-padding: 20px;
    padding: var(--container-padding);
}

.container .item {
    padding: var(--container-padding); /* 繼承自父容器的變數值 */
    margin-bottom: var(--container-padding);
}

在這個例子中,--container-padding 變數的作用域只限於 .container 選擇器及其子元素。

4. 變數的回退值

當使用 CSS 變數時,如果變數未定義或無效,可以指定一個回退值。這樣,在變數無法正常使用的情況下,會使用回退值作為替代。

語法

1
property: var(--變數名稱, 回退值);

範例

在變數未定義時使用回退值:

1
2
3
4
.card {
    background-color: var(--card-bg-color, #f0f0f0); /* 如果 --card-bg-color 未定義,則使用 #f0f0f0 */
    padding: var(--padding-large, 15px); /* 使用變數值或回退值 */
}

5. CSS 變數的優勢

  • 增強可維護性:將常用的樣式屬性(如顏色、字體大小、間距等)定義為變數,當需要修改時,只需更改變數值即可。
  • 提升一致性:通過使用變數,可以確保在不同的元素中使用相同的樣式值。
  • 提高靈活性:變數可以在不同的作用域中定義,並且可以根據不同的情況動態改變。

6. CSS 變數的應用實例

6.1 主題切換

CSS 變數可以用於實現網頁的主題切換功能,例如從淺色主題切換到深色主題:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
:root {
    --bg-color: #ffffff;
    --text-color: #333333;
}

body {
    background-color: var(--bg-color);
    color: var(--text-color);
}

/* 深色主題 */
.dark-theme {
    --bg-color: #333333;
    --text-color: #ffffff;
}

當應用 .dark-theme 類時,變數的值會被替換為深色主題的顏色:

1
2
3
<body class="dark-theme">
    <p>這是一個深色主題。</p>
</body>

6.2 界面設計中的動態變化

可以在不同的屏幕尺寸下更改變數的值,從而實現響應式設計:

1
2
3
4
5
6
7
8
9
10
11
12
13
:root {
    --padding-size: 10px;
}

@media (min-width: 768px) {
    :root {
        --padding-size: 20px;
    }
}

.container {
    padding: var(--padding-size);
}

7. 小結

CSS 變數是一種強大的工具,提供了更靈活的方式來管理和使用樣式。在現代網頁設計中,使用 CSS 變數可以顯著提高代碼的可讀性、可維護性和重用性,尤其是在處理複雜的設計或實現主題切換時。

本文章以 CC BY 4.0 授權