在還沒有原生的 CSS 變數之前,很多人應該在使用 SCSS 等工具在撰寫的時候感受到變數的方便,而 CSS 在近年也有了原生的變數可以使用,搭配好還是可以在撰寫純 CSS 的時候讓 code 變得更好維護。
基礎寫法:
- 宣告:--名稱: 值;
- 使用:屬性:var(--名稱, 預設值); ( 預設值為選填 )
用法示範如下:
:root { --main-color: #06c; // 宣告顏色 } h1 { color: var(--main-color); // 使用變數 }
而變數的使用也可以分成全域或區域變數,使用方法如下:
全域變數:
如果想要讓整個 CSS 檔都能讀到變數,則可以把變數設定在 :root 選擇器裡,:root 為網頁的根元素,如果不習慣看到 :root,也可以設定在 body 或 html。
:root{ --main-color: #f00; } h1, h2{ color: var(--main-color); }
區域變數:
相對於全域變數,如果不將變數設定在 :root、body或 html,這樣變數就只會在選擇器範圍內作用。
h1{ --main: #f00; color: var(--main-color); } h2{ color: var(--main-color); // 無法使用 --main-color 的顏色 }
也可以用以下方法複寫 CSS 變數。
<h1>Hello <i>World</i> !!!</h1>
:root{ --main: #f00; --second: #f00; } h1{ color: var(--main); --second: #00f; // 複寫 --second 的數值 } i{ color: var(--second); }
像這樣 i 裡面就會是複寫後的樣式。
行內樣式變數
行內樣式變數就更有趣了,只要把變數設定好,就能透過行內元素給定值。
設定 CSS 如下:
h1{ color: var(--main-color); }
接下來就可以透過行內樣式修改 css 的值:
<h1 style="--main-color: #f00;">Hello World</h1>
搭配 media query
CSS 的變數就很適合搭配 media query,這邊看個範例:
:root{ --color: #f00; --size: 18px; } @media (max-width: 768px){ :root{ --color: #00f; --size: 14px; } } h1{ color: var(--color); font-size: var(--size); }
像這樣就可以很方便的設定在不同狀況下不一樣的樣式了。