1.首先,什麼是預處理器呢?
A:CSS(Cascading Style Sheet-級聯樣式表) 預處理器是一種用來為 CSS 增加一些程式設計特性的語言,無需考慮浏覽器的相容性問題,例如你可以在 CSS 中使用變量、函數、簡單的程式邏輯等一些程式設計語言中的基本技巧,使得CSS 更為簡潔,适應性更強,代碼更直覺等諸多好處。
2.三種css預處理器的對比
對比 | Less | Sass | Stylus |
---|---|---|---|
安裝方式 | npm install -g less,即可被編譯成.css檔案 | 先安裝ruby,再安裝sass:gem install sass | npm install stylus |
聲明變量 | 聲明變量用『@』開頭,其餘等同 Sass 作用域:Less有全局變量與局部變量 | 聲明變量必須是『$』開頭,後面緊跟變量名和變量值,而且變量名和變量值需要使用冒号:分隔開 變量需要寫在字元串中時,必須寫在#{}中 全是全局變量,到那時可以通過!default來改變值 | 聲明變量沒有任何限定,結尾的分号可有可無,但變量名和變量值之間必須要有『等号』。但需要注意的是,如果用“@”符号來聲明變量,Stylus會進行編譯,但不會指派給變量。就是說,Stylus 不要使用『@』聲明變量。Stylus 調用變量的方法和Less、Sass完全相同 |
插值 | 無 | 無 | 通過使用{}字元包圍表達式來插入值,其會變成辨別符的一部分 vendor(prop, args) -webkit-{prop} args -moz-{prop} args {prop} args border-radius() vendor('border-radius', arguments) box-shadow() vendor('box-shadow', arguments) button border-radius 1px 2px / 3px 4px |
運算 | 組織數值型value。提供加減乘除運算。 | 提供加減乘除運算。 | 一進制運算符 二進制運算符 範圍”..", "..." 指數:** 相等與關系運算 真假 邏輯運算 存在操作:in |
指派方式 | 通過 的方式 | 與less一緻 | Stylus 通過 指派的方式,類似于程式設計語言的程式設計方式 |
作用域 | JS 一樣,逐級查找,向上冒泡 | 三者最差,不存在全局變量的概念。也就是說在 Sass 中定義了相同名字的變量時你就要小變态了 | 完全等同 Less。Stylus 和 Sass 則更傾向于指令式 |
嵌套 | | 在嵌套代碼中,可以使用&引用父元素 a { &:hover { color: #ffb3ff; } } | 雷同 |
繼承 | 這個方面Less 表現的稍微弱一些,更像是混入寫法 | 能把一個選擇器的所有樣式繼承到另一個選擇器上。使用『@extend』開始,後面接被繼承的選擇器 | 父級引用:混合書寫可以利用&繼承 |
條件語句 | 無 |
|
|
循環語句 | 無 |
|
|
@import | Less 為@Import 擴充了文法 | 無 | 無 |
mixin | @[email protected] | 直接調用 | 直接調用 |
實作方式 | 基于javascript,用戶端 | 基于ruby,服務端 |