Scss 變數
為什麼需要變數 ?
變數可以設定全域樣式,如果我們要改變專案中所有連結的顏色,純 CSS 只能一一去做更改,但將所有連結顏色的值導入變數後,只需要改變變數的值所有連結顏色就會一起更改
1 | $link-color: red; |
變數的格式
變數可以是任何 CSS 屬性的值,只要在最前面加上 $
,接著再加上命名的名稱,最後以 ;
結束
數值
可以包括單位和小數,其中單位可以是絕對單位 (px)
1 | $z-index-l: 10; |
字串
可以用 雙引號 ""
、單引號 ''
或沒有引號,是一個字串列時,可以用 ,
或空白隔開
1 | $font-family: "Noto Sans TC",sans-serif; |
顏色
可以是各種代碼表現
1 | $white: white; |
布林值
true
, false
空值
null
變數的運算
Sass 支援基本的數學運算,加 +
、減 -
、乘 *
、除 /
1 | $font-size-base: 16px; |
如果遇到除不盡的的小數會運算網頁解析度可以容許的範圍,雖然有很微小得留白,但肉眼幾乎無法察覺
1 | //in .scss |
陣列 (List)
陣列的英文是
Array
,而 Sass 只有List
,但用法上相同陣列是用來存放 “沒有鍵名的變數”,表示只能透過 “索引” (1,2,3,4)取值,而不是 “鍵名”(hover,active,…) ,而一般程式語言都從
0
開始,但 List 從1
開始,透過 nth() 使用 List1
2
3
4
5$color: red, blue, green;
// in scss
p {color: nth($color, 2)}
// in css
p {color: blue}當然也可以位索引導入變數
1
2
3
4
5
6$color: red, blue, green;
// in scss
$index: 2;
p {color: nth($color, $index)}
// in css
p {color: blue}
物件 (Map)
陣列的英文是
Object
,而在 Sass 中只有Map
,但用法相同Map
與List
不同之處在於可以 “自訂鍵名”,也就是每個值的名稱Map 使用小括號
( )
包住資料,內層使用逗號,
隔開資料,每筆資料都有獨立的鍵名key
與值value
,每個鍵名需用引號""
、''
包住1
2
3
4$map: (
'key1': value1,
'key2': value2
)使用 map-get(map, key)
將值取出1
2
3
4
5
6
7
8
9// in scss
$theme: (
'primary': blue,
'secondary': red,
)
p {color: map-get($theme, primary)}
// in css
p {color: blue}Map 指令
map-get(map, key)
: 取出指定的值map-merge(map1, map2)
: 合併 mapmap-remove(map, key)
: 移除指定的值map-keys(map)
: 列出 map 全部的 keymap-values(map)
: 列出 map 全部的 valuemap-has-key(map, key)
: 確認 map 中是否有指定 key