什么是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。


基本語法
*下文中的涉及到的例子均為.sass文件格式
變量($)


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




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


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


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


比較特殊的是/運(yùn)算,根據(jù)不同情況可以處理為除法運(yùn)算或者僅僅只是分隔數(shù)字的作用
以下三種情況/將被視為除法運(yùn)算符號:
如果值,或值的一部分,是變量或者函數(shù)的返回值
如果值被圓括號包裹
如果值是算數(shù)表達(dá)式的一部分
但如果希望使用變量,同時(shí)又要確保/不做除法運(yùn)算而是完整地編譯到 CSS 文件中,只需要用#{}插值語句將變量包裹。


除了數(shù)值的運(yùn)算還有顏色值的計(jì)算
顏色值的運(yùn)算是分段計(jì)算進(jìn)行的,也就是分別計(jì)算紅色,綠色,以及藍(lán)色的值
不過感覺一般實(shí)際項(xiàng)目中很少用到顏色值的計(jì)算,不過覺得有趣,所以就簡單提一下


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


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


插入文件( @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支持的數(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




@for


@if


SASS常用語法就總結(jié)到這里了,都是一些比較常見,日常開發(fā)中能用到的語法。
在總結(jié)的過程中,對我也是一個(gè)很好的鞏固的過程,畢竟組織成文字和小demo的形式更容易記住。
最后,個(gè)人認(rèn)為用的合適才是發(fā)揮了sass帶來的便利,不要為了用sass而用sass,一不小心反而會(huì)使得代碼變得復(fù)雜。
【社區(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)容
- 3.移動(dòng)端前端基礎(chǔ)架構(gòu) 15:16單詞釋義:a)mkdir: make directory 建立一個(gè)新的子目錄(...
- [toc] 前言 本文所有的演示都是基于Win10操作系統(tǒng)。 關(guān)于Sass 1.定義 Sass的學(xué)名叫“CSS預(yù)處...
- CSS Preprocess Different 在前端界,有三大 CSS 預(yù)處理器,分別是 SASS(SCSS)...
- 一、相關(guān)網(wǎng)站地址 Sass官網(wǎng):http://sass-lang.com/;Sass中文網(wǎng):https://www...