Sass/Scss 基礎篇
總結Sass學習到的內容
-
應用Sass/Scss前,環境配置
- 首先下載Ruby (http://rubyinstaller.org/downloads)
- 通過命令下載sass gem install sass
- VScode配置 下載外掛 Live Sass Compiler
- VScode配置 配置工作區中的setting.json
"liveSassCompile.settings.formats":[ // 擴充套件 { "format": "compact",//可定製的出口CSS樣式(expanded,compact,compressed,nested) "extensionName": ".min.css",//編譯字尾名 "savePath": null//編譯儲存的路徑 } ], "liveSassCompile.settings.generateMap": false, //不生成map檔案 "liveSassCompile.settings.excludeList": [ "**/node_modules/**", ".vscode/**" ** // 只是編譯當前的sass檔案 ], "liveSassCompile.settings.autoprefix": [ "> 1%", //">1%"是指 通過全球使用情況統計資訊選擇出的高於1%使用率的瀏覽器版本。 "last 3 versions" //"last 3 versions"是指 每個瀏覽器的最後3個版本。 或 "ie >= 6", //ie6以上 "firefox >= 8", "chrome >= 24", "Opera>=10" ]
-
Sass與Scss的區別
Sass編譯寫法偏向於Python 沒有大括號{}以及分號;
Scss編譯寫法偏向於CSS 有大括號和分號 -
編譯方法
- 命令編譯
<Sass檔案PATH> : <編譯後的CSS檔案的PATH> (單檔案)
sass/ : css/ (多檔案)
sass --watch 自動監測程式碼變化,自動編譯 - GUI編譯 (VScode的自動編譯 上面已配置)
- 自動化編譯 Grunt和Gulp自動化 <cm: 後期要把這部分補上>
- 命令編譯
-
編譯出的樣式
- 巢狀 -- nested 大括號不單都佔行
- 展開 -- expanded 大括號單都佔行
- 緊湊 -- compact 每項只佔一行
- 壓縮 -- compressed 全部一行 (後期推薦使用此方法,減輕檔案所佔記憶體)
Sass/Scss 基礎知識
-
預設變數宣告:
$btn-primary-color : #fff !default;
想要改變預設值要在預設語句前面定義 -
註釋: //不在編譯後CSS檔案中顯示 /* */在編譯後CSS檔案中顯示
-
資料型別:
數字,字串,顏色,布林值,空值,值列表(用空格或逗號分開) -
字串:
有引號字串"header-1"
無引號字串 sans-serifbold
但是在使用插值的時候,無論呼叫的是否是無引號的字串,都會被編譯成無引號的字串 -
值列表:
nth:訪問值列表的某一項(第幾項)
append: 新增
join: 連線多個列表
@each:遍歷值列表中的所有專案 -
運算:
加 減 乘 除
乘法運算時: 20px * 2 後面的數字不能帶單位
除法運算時:
在程式碼中"/"被認為是除法的情況:- 算式中有變數
- 除法算式被()包圍
- 不只有除法運算時
當進行顏色運算時,十六進位制#xxxxxx 當成十進位制數字運算
Sass/Scss 常用標準方法--重要
-
巢狀:
-- 父類子類巢狀
- 選擇器巢狀
- 屬性巢狀
- 偽類巢狀
注:儘量避免使用選擇器巢狀,避免選擇器太具體。否則對於後期維護,以及程式碼可讀性都有很差的體驗
-
混合巨集:@mixin (重點)
-- 相當於用於被呼叫的小函式,用於通過同樣的演算法,自動生成各自的樣式
- 特點:
- 可帶引數
- 呼叫方法 @include
- 可傳一個不帶值的引數--變數
- 傳一個帶值的引數--常量
- 缺點:
不動自動合併相同樣式的程式碼
- 特點:
-
擴充套件/繼承:@extend
-- 相當於CSS中堆疊樣式,在父類樣式的基礎上再新增或改變樣式
-
佔位符:%xxx
-- 不被呼叫時,不會產生CSS程式碼,可以節省空間
-
插值:Interpolation
-- 與JS中join方法很像,主要是拼接功能
- 可以用在呼叫繼承以及呼叫佔位符的時候,拼接選擇器,拼接佔位符的名,以及可以用於拼接屬性 例:margin-top
- 不能用於拼接變數&xx,混合巨集的函式名 會報錯
問題探討
-
混合巨集 VS 繼承 VS 佔位符 (優劣對比)
混合巨集: 如果你的程式碼中涉及到變數,建議使用混合巨集來建立相同程式碼。
繼承: 不需要變數時,並且基類(父類)在HTML中被使用時用繼承
佔位符: 基類(父類)不在HTML被使用時,用佔位符。