摘要:下面是一個(gè)簡(jiǎn)短的說(shuō)明當(dāng)我們說(shuō)起,我們經(jīng)常指的是兩種事物一種預(yù)處理器和一種語(yǔ)言。同時(shí),預(yù)處理器有兩種不同的語(yǔ)法一種縮進(jìn)語(yǔ)法一種語(yǔ)法歷史最開(kāi)始,是的一部分,是一種預(yù)處理器,由開(kāi)發(fā)者設(shè)計(jì)和開(kāi)發(fā)。
我最近寫(xiě)了很多 Sass 代碼,但是最近發(fā)現(xiàn)并不是每一個(gè)人都知道 Sass 具體是什么。下面是一個(gè)簡(jiǎn)短的說(shuō)明:
當(dāng)我們說(shuō)起 Sass ,我們經(jīng)常指的是兩種事物:一種 css 預(yù)處理器和一種語(yǔ)言。我們經(jīng)常這樣說(shuō),“我們正在使用 Sass”,或者 “這是一個(gè) Sass mixin”。同時(shí),Sass (預(yù)處理器)有兩種不同的語(yǔ)法:
Sass,一種縮進(jìn)語(yǔ)法
SCSS,一種 CSS-like 語(yǔ)法
歷史最開(kāi)始,Sass 是Haml的一部分,Haml 是一種預(yù)處理器,由 Ruby 開(kāi)發(fā)者設(shè)計(jì)和開(kāi)發(fā)。因?yàn)檫@樣,Sass 使用類(lèi)似 Ruby的語(yǔ)法,沒(méi)有花括號(hào),沒(méi)有分號(hào),具有嚴(yán)格的縮進(jìn),就像這樣:
// Variable !primary-color= hotpink // Mixin =border-radius(!radius) -webkit-border-radius= !radius -moz-border-radius= !radius border-radius= !radius .my-element color= !primary-color width= 100% overflow= hidden .my-other-element +border-radius(5px)
你可以就看到,這和CSS代碼有很大的區(qū)別!即使你是一個(gè) Sass(預(yù)處理器) 用戶,你也會(huì)發(fā)現(xiàn)這和你正在使用的有很大的差別。變量的標(biāo)志用 !,而不是$,分配符是=而不是:。非常怪異。
但是在2010年五月之前,Sass 就是這個(gè)樣子的。2010年5月,官方推出了一個(gè)全新的語(yǔ)法,被叫做 SCSS,意思是 Sassy CSS。這個(gè)語(yǔ)法帶來(lái)了對(duì) CSS 友好的語(yǔ)法,試圖彌合 Sass 和 CSS 之間的鴻溝。
// Variable $primary-color: hotpink; // Mixin @mixin border-radius($radius) { -webkit-border-radius: $radius; -moz-border-radius: $radius; border-radius: $radius; } .my-element { color: $primary-color; width: 100%; overflow: hidden; } .my-other-element { @include border-radius(5px); }
SCSS 和 Sass 相比更加貼近 CSS 語(yǔ)法。也就是說(shuō),Sass 維護(hù)者做了大量的工作,把縮進(jìn)語(yǔ)法中的!和=換成了 SCSS 中的 $ 和 :。
現(xiàn)在,在開(kāi)始一個(gè)新項(xiàng)目時(shí),你也許疑惑要用哪種語(yǔ)法。讓我們來(lái)看看兩種語(yǔ)法的優(yōu)劣。
Sass縮進(jìn)語(yǔ)法的優(yōu)劣雖然語(yǔ)法看起來(lái)怪異,但是縮進(jìn)語(yǔ)法有很多有趣的點(diǎn)。首先,它 更短并且更易于書(shū)寫(xiě)。沒(méi)有花括號(hào),沒(méi)有分號(hào),你完全不需要這些東西。更好的是,你甚至不需要@mixin 或者 @include, 一個(gè)字符就足夠了:= 和 +。
同時(shí) Sass 通過(guò)嚴(yán)格的縮進(jìn)來(lái)強(qiáng)制 clean coding standards。因?yàn)橐粋€(gè)錯(cuò)誤的縮進(jìn)就會(huì)破壞整個(gè).sass文件,這使得整個(gè)代碼總是clean 和格式良好的。只有一種寫(xiě) Sass 代碼的方式:正確的方式。
但是請(qǐng)注意!縮進(jìn)在 Sass 中是有意義的。當(dāng)你縮進(jìn)了一個(gè)元素,這意味這你將它變?yōu)榱酥霸氐淖釉?。比?
.element-a color: hotpink .element-b float: left
以上會(huì)輸出下面的 CSS 代碼:
.element-a { color: hotpink; } .element-a .element-b { float: left; }
將 .element-b 向右一格以為著它變成了 .element-a 的子元素,改變了輸出 CSS 代碼的結(jié)果。所以一定要小心你的代碼縮進(jìn)。
另外,我覺(jué)得基于縮進(jìn)的語(yǔ)法適合于 Ruby/Python 團(tuán)隊(duì),而不適合 PHP/Java 團(tuán)隊(duì)。(這是值得商榷的,我也希望聽(tīng)到不同的聲音)
SCSS語(yǔ)法的優(yōu)劣對(duì)于初學(xué)者,SCSS 是完全和 CSS 兼容的,這意味著幾乎為零的學(xué)習(xí)曲線。SCSS語(yǔ)法即是:它只是加了一些功能的 CSS。當(dāng)你和沒(méi)經(jīng)驗(yàn)的開(kāi)發(fā)者一起工作時(shí)這很重要:他們可以很快開(kāi)始編碼而不需要首先去學(xué)習(xí)Sass。
此外,SCSS 還是 易于閱讀 的,因?yàn)樗怯姓Z(yǔ)義的,而不是用符號(hào)表示。當(dāng)你讀到 @mixin,你就會(huì)知道這是一個(gè) mixin 聲明;當(dāng)你看到 @include ,你就是在引用一個(gè) mixin。他并沒(méi)有用任何縮寫(xiě),當(dāng)你大聲讀出來(lái)時(shí)所有的都很明了。
還有,現(xiàn)在幾乎所有 Sass 的工具,插件和 demo 都是基于 SCSS語(yǔ)法來(lái)開(kāi)發(fā)的。隨著時(shí)間過(guò)去,SCSS 會(huì)變成大家首選的選擇。比如,你現(xiàn)在很難找到一個(gè) Sass 縮進(jìn)語(yǔ)法的高亮插件,通常都只有 SCSS 的可以用。
總結(jié)如何選擇取決于你,但是除非你有很好的理由一定要使用縮進(jìn)的語(yǔ)法,我強(qiáng)烈推薦使用 SCSS 。不僅僅它很簡(jiǎn)單,同時(shí)他也很方便。
最后請(qǐng)注意 Sass 從來(lái)沒(méi)有大寫(xiě)過(guò),無(wú)論你指的是語(yǔ)法或者這個(gè)語(yǔ)言。同時(shí), SCSS 一直是大寫(xiě)的。甚至有一個(gè)網(wǎng)站專(zhuān)門(mén)來(lái)提醒你這件事!
翻譯自What’s the Difference Between Sass and SCSS?
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/115318.html
摘要:不過(guò)必須要先安裝,然后再安裝。淘寶鏡像安裝由于國(guó)內(nèi)網(wǎng)絡(luò)原因你懂的,導(dǎo)致存放在上面的資源文件間歇性連接失敗。嵌套可以進(jìn)行選擇器的嵌套,表示層級(jí)關(guān)系。重要注釋管理項(xiàng)目文件結(jié)構(gòu)預(yù)處理器的特點(diǎn)之一是可以把你的代碼分割成很多文件,而且不會(huì)影響性能。 Sass 是什么? showImg(https://segmentfault.com/img/bVqyKF); Sass 是 Syntactical...
摘要:即元素脫離文檔流的布局,在頁(yè)面的任意位置顯示絕對(duì)定位脫離文檔流的布局,遺留下來(lái)的空間由后面的元素填充。相對(duì)定位不脫離文檔流的布局,只改變自身的位置,在文檔流原先的位置遺留空白區(qū)域。 1、描述 CSS 指層疊樣式表 (Cascading Style Sheets) Sass (Syntactically Awesome StyleSheets),是由buby語(yǔ)言編寫(xiě)的一款css預(yù)處理...
摘要:是通過(guò)加載器和插件對(duì)資源進(jìn)行處理的。另外我們知道是對(duì)整個(gè)過(guò)程進(jìn)行控制,所以在其配置文件中配置的每一個(gè)對(duì)項(xiàng)目中該配置路徑下所有的資源都可以管理。 一 概念介紹 gulp 是 task runner,Webpack 是 module bundler。可以這么說(shuō), Webpack 和 gulp 本身都有 95% 的功能是不能被對(duì)方替代,或者直接說(shuō)和對(duì)方不重疊的。 1 什么是gulp Gulp...
閱讀 1922·2021-11-24 09:39
閱讀 2145·2021-09-22 15:50
閱讀 2024·2021-09-22 14:57
閱讀 711·2021-07-28 00:13
閱讀 1077·2019-08-30 15:54
閱讀 2368·2019-08-30 15:52
閱讀 2694·2019-08-30 13:07
閱讀 3794·2019-08-30 11:27