SASS常用語法概要

什么是SASS

sass是“css預(yù)處理器”中的一員,所謂“css預(yù)處理器”就是用一種專門的編程語言,進(jìn)行網(wǎng)頁樣式設(shè)計(jì),然后再編譯成正常的css文件。

sass就是在css語法的基礎(chǔ)上增加了變量 (variables)、嵌套 (nested rules)、混合 (mixins)、導(dǎo)入 (inline imports) 等高級功能,這些拓展令 CSS 更加強(qiáng)大與優(yōu)雅。使用 Sass 以及 Sass 的樣式庫(如Compass)有助于更好地組織管理樣式文件,以及更高效地開發(fā)項(xiàng)目。

sass有兩種文件格式,文件后綴名分別為.scss和.sass

其中.scss文件和一般的.css文件格式一樣,都有花括號和分號,僅僅只是在css的語法上進(jìn)行了拓展;而.sass文件使用 “縮進(jìn)” 代替 “花括號” 表示屬性屬于某個(gè)選擇器,用 “換行” 代替 “分號” 分隔屬性??s進(jìn)格式也可以使用 Sass 的全部功能,只是與 SCSS 相比個(gè)別地方采取了不同的表達(dá)方式,具體請查看the indented syntax reference。


.scss文件
.sass文件

基本語法

*下文中的涉及到的例子均為.sass文件格式

變量($)


變量定義及使用
編譯后的.css文件

變量有塊級作用域(局部變量)和全局作用域(全局變量)之分,也可通過!global將塊級作用域里面的局部變量轉(zhuǎn)化為全局變量;

全局變量和塊級變量
全局變量和塊級變量
編譯后的.css文件
塊級變量變?yōu)槿肿兞?/div>

*這里遇到了一個(gè)坑,在.sass文件中不要在!global后面直接添加注釋,編譯會(huì)報(bào)錯(cuò),但是在.scss文件中在!global后面直接添加注釋,編譯卻不會(huì)報(bào)錯(cuò),估計(jì)是因?yàn)?scss文件中有;可以明確區(qū)分代碼和注釋,而.sass中不能明確區(qū)分什么是注釋什么是代碼

如果要將變量插入到字符串中,可以使用插值符號——#{}

插值符號的使用
編譯后的.css文件

嵌套(選擇器嵌套&屬性嵌套&父選擇器)


選擇器嵌套&屬性嵌套&父選擇器的使用


編譯后的.css文件

運(yùn)算

SASS還支持運(yùn)算的功能

加減乘除、取整等運(yùn)算 (+, -, *, /, %),同時(shí),如果有需要它會(huì)在不同單位間轉(zhuǎn)換值。


編譯前.sass
編譯后.css

比較特殊的是/運(yùn)算,根據(jù)不同情況可以處理為除法運(yùn)算或者僅僅只是分隔數(shù)字的作用

以下三種情況/將被視為除法運(yùn)算符號:

如果值,或值的一部分,是變量或者函數(shù)的返回值

如果值被圓括號包裹

如果值是算數(shù)表達(dá)式的一部分

但如果希望使用變量,同時(shí)又要確保/不做除法運(yùn)算而是完整地編譯到 CSS 文件中,只需要用#{}插值語句將變量包裹。

編譯前.sass
編譯后.css


除了數(shù)值的運(yùn)算還有顏色值的計(jì)算

顏色值的運(yùn)算是分段計(jì)算進(jìn)行的,也就是分別計(jì)算紅色,綠色,以及藍(lán)色的值

不過感覺一般實(shí)際項(xiàng)目中很少用到顏色值的計(jì)算,不過覺得有趣,所以就簡單提一下

編譯前.sass
編譯后.css

混合指令 (Mixin Directives)

混合指令(Mixin)用于定義可重復(fù)使用的樣式,通過@mixin來定義,@include來調(diào)用,同時(shí)支持參數(shù)的指定,參數(shù)若是沒有傳時(shí),可以使用默認(rèn)值,或者明確要傳入哪一個(gè)特定參數(shù)。

編譯前.sass
編譯后.css

繼承 ( @extend )

sass支持一個(gè)選擇器繼承另一個(gè)選擇器的所有樣式。

編譯前.sass
編譯后.css

插入文件( @import )

Sass 拓展了@import的功能,允許其導(dǎo)入 SCSS 或 Sass 文件。被導(dǎo)入的文件將合并編譯到同一個(gè) CSS 文件中,另外,被導(dǎo)入的文件中所包含的變量或者混合指令 (mixin) 都可以在導(dǎo)入的文件中使用。

若導(dǎo)入的文件后綴名為.css文件,則import作為普通的css語句。

若導(dǎo)入的文件后綴名為.sass或.scss,則被導(dǎo)入的文件將與當(dāng)前文件合并,同時(shí),@import "foo"或者@import "foo.sass"導(dǎo)入的效果都是一致的,沒有指定拓展名,Sass 將會(huì)試著尋找文件名相同,拓展名為.scss或.sass的文件并將其導(dǎo)入。

注釋

Sass 支持標(biāo)準(zhǔn)的 CSS 多行注釋/* */,以及單行注釋//,前者會(huì)被完整輸出到編譯后的 CSS 文件中,而后者則不會(huì)。

編譯前.sass
編譯后.css

高級用法

sass支持的數(shù)據(jù)類型中,除了數(shù)字,字符串,顏色,布爾型,空值,

還有:

數(shù)組 (list),用空格或逗號作分隔符,1.5em 1em 0 2em, Helvetica, Arial, sans-serif

maps, 相當(dāng)于 JavaScript 的 object,(key1: value1, key2: value2)

于是我們便可以使用@each這樣的高級用法

@each

編譯前.sass
編譯后.css
編譯前.sass
編譯后.css

@for

編譯前.sass
編譯后.css

@if

編譯前.sass
編譯后.css

SASS常用語法就總結(jié)到這里了,都是一些比較常見,日常開發(fā)中能用到的語法。

在總結(jié)的過程中,對我也是一個(gè)很好的鞏固的過程,畢竟組織成文字和小demo的形式更容易記住。

最后,個(gè)人認(rèn)為用的合適才是發(fā)揮了sass帶來的便利,不要為了用sass而用sass,一不小心反而會(huì)使得代碼變得復(fù)雜。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容