CSS 預處理器


Posted by tzutzu858 on 2021-04-20

CSS 的問題

  • 全域會互相干擾
    同一個 html 引入不同的 css 會互相干擾,有時 debug 會不知道到底是哪個 css 檔出了問題
  • 沒有辦法組合
    共用樣式沒辦法統一處理,必須用不同選擇器,變得不好維護

有預處理器就有後處理器

SCSS or Less(預處理器)=>變成 CSS =>(後處理器)=>變成加工過後的 CSS
後處理器舉例來說可能是有些特別屬性瀏覽器不支援,那就加工一下

什麼是 CSS 預處理器

前端和其他後端或是手機 app 不太一樣的地方在於瀏覽器,因為前端是跑在瀏覽器上面,所以寫 code 就要注意到瀏覽器的支援程度,例如我想要寫最新最潮的語法,有些瀏覽器不支援怎麼辦,那就透過一些工具把新的語法轉換成舊的就好了,例如 Babel ,可以把 ES6 換成 ES5

CSS 預處理器也是類似概念

寫 CSS 常常覺得不像在寫程式的感覺,因為就是 CSS 那些語法跟規則在遵循,可是如果可以把 CSS 寫成跟程式一樣有迴圈、function、變數之類的,這樣寫起來是個很不錯的體驗。因此 CSS 預處理器就是先寫某個語法,寫完之後透過 CSS 預處理器轉換成 CSS,最後其實還是 CSS。

SCSS & SASS

SCSS 和 SASS 兩個是很相似的東西,只有一點點不一樣,但大致上語法都相似
可以直接去 SASS 官網的 learn sass
舉兩個例子簡單說明一下:


裡面會有 SCSS、SASS 兩個不同的寫法,在 variable 也只差在 {};

最常用可能是巢狀功能
用下面圖片裡的例子,CSS 原生寫法要分成 3 個來寫,但用 SCSS 來寫可以寫在一起,更有語意一點



實際操作 SCSS

安裝

npm install -g sass

看版本

sass --version

Preprocessing

sass --watch input.scss output.css


轉換完發現多了兩個檔案 s.css s.css.map
map 就是俗稱的 sourceMap,因為有時 compile 出來,在 debug 的時候,他只會顯示行數跟錯誤訊息之類的,如果有 sourceMap 就可以抓到你原本的程式碼是什麼


--watch
如果像上面圖片裡寫 sass input.scss output.css 那每改一次都要手動編譯一次實在太浪費時間
因此在最前面加上--watch,就會自動偵測你的 input.scss 有沒有改動,有改動就自動 compile

所以 input.scss 按下存檔後,程式自動 compile


其它套 CSS 預處理器

Less

Stylus











Related Posts

第 19 期 Python 程式設計入門-作業任務5

第 19 期 Python 程式設計入門-作業任務5

Day06: GraphQL - Enumeration and list types wiht node.js

Day06: GraphQL - Enumeration and list types wiht node.js

[12] 函式 Function

[12] 函式 Function


Comments