less和sass有什么區(qū)別晒衩?

1.背景介紹

預(yù)處理器:

CSS預(yù)處理器是一種語(yǔ)言,用來為CSS增加一些編程的的特性偏友,無需考慮瀏覽器的兼容性問題,例如你可以在CSS中使用變量、簡(jiǎn)單的程序邏輯享怀、函數(shù)等等在編程語(yǔ)言中的一些基本技巧,可以讓你的CSS更見簡(jiǎn)潔趟咆,適應(yīng)性更強(qiáng)添瓷,代碼更直觀等諸多好處。

我們最常用的預(yù)處理器有scss和less值纱。


2.知識(shí)剖析

sass背景

Sass誕生于2007年鳞贷,最早也是最成熟的一款CSS預(yù)處理器語(yǔ)言。

現(xiàn)在的Sass已經(jīng)有了兩套語(yǔ)法規(guī)則:一個(gè)依舊是用縮進(jìn)作為分隔符來區(qū)分代碼塊的虐唠;另一套規(guī)則和CSS一樣采用了大括號(hào)({})作為分隔符搀愧。后一種語(yǔ)法規(guī)則又名SCSS,在Sass3之后的版本都支持這種語(yǔ)法規(guī)則。目前我們所稱的sass一般指語(yǔ)法更為嚴(yán)格和友好的scss咱筛。

less背景

2009年開源的一個(gè)項(xiàng)目搓幌,受Sass的影響較大,使用CSS的語(yǔ)法,在很多流行的框架和工具中已經(jīng)能經(jīng)逞嘎幔看到LESS的身影了(例如Twitter的Bootstrap框架就使用了LESS)溉愁。

當(dāng)時(shí)SASS和現(xiàn)在的scss不同,采用了縮進(jìn)作為分隔符來區(qū)分代碼塊饲趋,而不是CSS中廣為使用的大括號(hào)({})拐揭。為了讓CSS現(xiàn)有的用戶使用起來更加方便,Alexis開發(fā)了LESS并提供了類似CSS的書寫功能奕塑。


3.常見問題

scssless有什么不同

我們知道scss和less相似堂污,它們都可以使用變量、常量爵川、嵌套敷鸦、混入、繼承等功能寝贡,可以更有效有彈性的寫出CSS扒披,下面我們看看它們之間的差異。


4.解決方案

A安裝

Sass:

sass基于Ruby語(yǔ)言開發(fā)而成圃泡,

因此安裝sass前需要安裝Ruby碟案。

Less:

less直接link引入“.less”文件,再引入less.js文件即可颇蜡。




B變量

sass是以$開頭定義的變量价说,如:

$mainColor: #963;

less是以@開頭定義的變量,如:

@mainColor: #963;


C作用域

sass沒有局部變量风秤,滿足就近原則鳖目。

less中{}內(nèi)定義的變量為局部變量。

作用域和其他程序語(yǔ)言中的作用域非常的相同缤弦,

他首先會(huì)查找局部定義的變量领迈,如果沒有找到,

會(huì)像冒泡一樣碍沐,一級(jí)一級(jí)往下查找狸捅,直到根為止,


D混合(Mixins)

Sass的混合:

sass樣式中聲明Mixins時(shí)需要使用“@mixin”命令累提,

在選擇器調(diào)用定義好的Mixins需要使用“@include”尘喝。

/*聲明一個(gè)Mixin叫作“abc”*/

@mixin abc($bg-c:red){

width: 100px;

height:100px;

background-color: $bg-c;

}

/*調(diào)用abc Mixins*/

.a{

@include abc();

}

.b{

/*將參數(shù)$bg-c的值重定義為blue*/

@include abc(blue);

}

less的混合:

在less中,混合是指將定義好的“ClassA”中引入另一個(gè)已經(jīng)定義的“Class”斋陪,就像在當(dāng)前的“Class”中增加一個(gè)屬性一樣朽褪。

/*聲明一個(gè)Mixin叫作“abc”*/

.abc($bg-c:red){

width: 100px;

height:100px;

background-color: $bg-c;

}

/*調(diào)用abc Mixins*/

.a{

.abc();

}

.b{

/*將參數(shù)$bg-c的值重定義為blue*/

.abc(blue);

}

兩者編譯出的值相同:

.a{

width: 100px;

height:100px;

background-color: red;

}

.b{

width: 100px;

height: 100px;

background-color: blue;

}


E嵌套

兩則寫法相同:

section {

margin:10px;

nav {

height:25px;

a {

color:#0982c1;

&:hover {

text-decoration:underline;

}

}

}

}


F繼承

/*sass的繼承:@extend*/

.block {

margin: 10px 5px;

padding: 2px;

}

p {

@extend .block;/*繼承.block選擇器下所有樣式*/

border: 1px solid #eee;

}

ul,ol {

@extend .block; /*繼承.block選擇器下所有樣式*/

color: #333;

text-transform: uppercase;

}

/*less的繼承:類似于mixins*/

.block {

margin: 10px 5px;

padding: 2px;

}

p {

.block;/*繼承.block選擇器下所有樣式*/

border: 1px solid #eee;

}

ul,ol {

.block; /*繼承.block選擇器下所有樣式*/

color: #333;

text-transform: uppercase;

}

編譯后:

//sass

.block,p,ul,ol {

margin: 10px 5px;

padding:2px;

}

p {

border: 1px solid #eee

}

ul,ol {

color:#333;

text-transform:uppercase;

}

//less

.block {

margin: 10px 5px;

padding:2px;

}

p {

margin: 10px 5px;

padding:2px;

border: 1px solid #eee

}

ul,ol {

margin: 10px 5px;

padding:2px;

color:#333;

text-transform:uppercase;

}


G高級(jí)語(yǔ)言

sass對(duì)條件語(yǔ)句和循環(huán)語(yǔ)句的處理要比less語(yǔ)言強(qiáng)大置吓。具有真正的語(yǔ)言處理能力。


6.擴(kuò)展思考

A還有什么好的預(yù)處理器語(yǔ)言缔赠?

stylus交洗,2010年產(chǎn)生于Node.js社區(qū),可同時(shí)使用縮進(jìn)和括號(hào)寫法,寫法非常靈活橡淑,擴(kuò)展性與scss相當(dāng),高于less咆爽,但由于規(guī)定過少梁棠,可能容易讓人混亂。

B我該如何選擇css預(yù)處理器?

1斗埂,Sass誕生是最早也是最成熟的CSS預(yù)處理器符糊,有Ruby社區(qū)和Compass支持;Stylus早期服務(wù)于Node JS項(xiàng)目呛凶,在該社區(qū)得到一定支持者男娄;LESS出現(xiàn)于2009年,支持者遠(yuǎn)超于Ruby和Node JS社區(qū)漾稀;

2模闲,sass和stylus擴(kuò)展性更強(qiáng),sass廣泛使用于國(guó)外崭捍,less在國(guó)內(nèi)受眾最多尸折。stylus是后起之秀。

3殷蛇,Sass和LESS語(yǔ)法較為嚴(yán)謹(jǐn)实夹、嚴(yán)密,而Stylus語(yǔ)法相對(duì)散漫粒梦,其中LESS學(xué)習(xí)起來更快一些亮航,因?yàn)樗馛SS的標(biāo)準(zhǔn);

4匀们,sass和LESS相互影響較大缴淋,其中Sass受LESS影響,已經(jīng)進(jìn)化到了全面兼容CSS的SCSS昼蛀;

5宴猾,Sass和LESS都有第三方工具提供轉(zhuǎn)譯,特別是Sass和Compass是絕配叼旋;


7.參考文獻(xiàn)

參考一:CSS預(yù)處理器——Sass仇哆、LESS和Stylus實(shí)踐

參考二:SASS用法指南

參考三:為您詳細(xì)比較三個(gè)CSS預(yù)處理器(框架):Sass、LESS和Stylus

參考四:Less中文網(wǎng)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末夫植,一起剝皮案震驚了整個(gè)濱河市讹剔,隨后出現(xiàn)的幾起案子油讯,更是在濱河造成了極大的恐慌,老刑警劉巖延欠,帶你破解...
    沈念sama閱讀 211,496評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件陌兑,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡由捎,警方通過查閱死者的電腦和手機(jī)兔综,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,187評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來狞玛,“玉大人软驰,你說我怎么就攤上這事⌒姆荆” “怎么了锭亏?”我有些...
    開封第一講書人閱讀 157,091評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)硬鞍。 經(jīng)常有香客問我慧瘤,道長(zhǎng),這世上最難降的妖魔是什么固该? 我笑而不...
    開封第一講書人閱讀 56,458評(píng)論 1 283
  • 正文 為了忘掉前任锅减,我火速辦了婚禮,結(jié)果婚禮上伐坏,老公的妹妹穿的比我還像新娘上煤。我一直安慰自己,他們只是感情好著淆,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,542評(píng)論 6 385
  • 文/花漫 我一把揭開白布劫狠。 她就那樣靜靜地躺著,像睡著了一般永部。 火紅的嫁衣襯著肌膚如雪独泞。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,802評(píng)論 1 290
  • 那天苔埋,我揣著相機(jī)與錄音懦砂,去河邊找鬼。 笑死组橄,一個(gè)胖子當(dāng)著我的面吹牛荞膘,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播玉工,決...
    沈念sama閱讀 38,945評(píng)論 3 407
  • 文/蒼蘭香墨 我猛地睜開眼羽资,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了遵班?” 一聲冷哼從身側(cè)響起屠升,我...
    開封第一講書人閱讀 37,709評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤潮改,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后腹暖,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體汇在,經(jīng)...
    沈念sama閱讀 44,158評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,502評(píng)論 2 327
  • 正文 我和宋清朗相戀三年脏答,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了糕殉。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,637評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡殖告,死狀恐怖糙麦,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情丛肮,我是刑警寧澤,帶...
    沈念sama閱讀 34,300評(píng)論 4 329
  • 正文 年R本政府宣布魄缚,位于F島的核電站宝与,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏冶匹。R本人自食惡果不足惜习劫,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,911評(píng)論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望嚼隘。 院中可真熱鬧诽里,春花似錦、人聲如沸飞蛹。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,744評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)卧檐。三九已至墓懂,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間霉囚,已是汗流浹背捕仔。 一陣腳步聲響...
    開封第一講書人閱讀 31,982評(píng)論 1 266
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留盈罐,地道東北人榜跌。 一個(gè)月前我還...
    沈念sama閱讀 46,344評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像盅粪,于是被迫代替她去往敵國(guó)和親钓葫。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,500評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容