Less/Sass

Less 和 Sass

第一章 Less和Sass簡介

Less和Sass都為動(dòng)態(tài)樣式表的語言靶瘸,即css框架咬腋,通過簡潔明了的語法定義吸申,使得編寫CSS的工作變得非常簡單两嘴。

第二章 Less

本質(zhì)上,LESS 包含一套自定義的語法及一個(gè)解析器届慈,用戶根據(jù)這些語法定義自己的樣式規(guī)則徒溪,這些規(guī)則最終會(huì)通過解析器,編譯生成對(duì)應(yīng)的 CSS 文件金顿。LESS 并沒有裁剪 CSS 原有的特性臊泌,更不是用來取代 CSS 的,而是在現(xiàn)有 CSS 語法的基礎(chǔ)上揍拆,為 CSS 加入程序式語言的特性渠概。

2.1 配置

在服務(wù)器配置less非常簡單,只需要安裝less的編譯器:

npm install -g less

打開lessc --help,我們可以看到使用方法:

lessc [option option=parameter ...] <source> [destination],實(shí)際上嫂拴,我們編譯一個(gè)less文件的時(shí)候高氮,可以直接輸出指令

lessc styles.less styles.css

而在客戶端使用則更加便捷,我們可以直接引入名為less.js的編譯器顷牌,對(duì)所寫代碼進(jìn)行編譯

<link rel="stylesheet/less" type="text/less" href="styles.less" />
<script src="http://cdn.bootcss.com/less.js/1.7.0/less.min.js" type="text/javascript"></script>

注意,一定要在自己寫完的樣式之后引入less編譯器

2.2 變量

Less中的變量充許你在樣式中的某個(gè)地方對(duì)常用的值進(jìn)行定義塞淹,然后應(yīng)用到樣式中窟蓝,這樣只要改變你定義的變量參數(shù)值就可以達(dá)到改變?nèi)值男Ч?/p>

@color: #4d926f;
    #header {
        color: @color;
    }
    h2 {
        color: @color;
    }      

編譯后的效果

#header {
    color: #4d926f;
}
h2 {
    color: #4d926f;
}

同時(shí),對(duì)于變量饱普,我們還可以做運(yùn)算

@nice-blue: #5B83AD;
@light-blue: @nice-blue + #111;

#header { color: @light-blue; }

我們不僅可以定義屬性值為變量运挫,同時(shí)可以定義屬性為常量;

@color :blue;
@blue : 'color' ;
@height:10px; 
@width:100px; 
#header {
    height: @height; 
    width: @width; 
    color: @@blue; 
} 

在一個(gè)less文件中,我們可以使用@inport導(dǎo)入其他less文件

@color : blue;
@import '02.less';
div{
    color:@color;
    background:@background;
}
@background:yellow;

2.3 混入

在 LESS 中我們可以定義一些通用的屬性集為一個(gè) class套耕,然后在另一個(gè) class 中去調(diào)用這些屬性.

.border{
    border:1px solid red;
}
@color :blue;
@blue : 'color' ;
@height:10px; 
@width:100px; 
#header {
    height: @height; 
    width: @width; 
    color: @@blue; 
    .border;
}

在混入的同時(shí),我們可以把這個(gè)類看作一個(gè)可以傳遞參數(shù)的函數(shù)調(diào)用

.border(@yourcolor){
    border:1px solid @yourcolor;
}
@color :blue;
@blue : 'color' ;
@height:10px; 
@width:100px; 
#header {
    height: @height; 
    width: @width; 
    color: @@blue; 
    .border(yellow);
}

當(dāng)然,對(duì)于函數(shù),我們也可以定義默認(rèn)值

.border(@yourcolor:red){
    border:1px solid @yourcolor;
}
@color :blue;
@blue : 'color' ;
@height:10px; 
@width:100px; 
#header {
    height: @height; 
    width: @width; 
    color: @@blue; 
    .border;
}

2.4 套嵌

我們平時(shí)在寫css的時(shí)候,通常會(huì)多次運(yùn)用選擇器選擇子元素進(jìn)行樣式控制

<div id="header">
    <a>學(xué)習(xí)less</a>
</div>
#header {
    display: inline;
    float: left;
}
#header a {
    font-size: 26px;
    font-weight: bold;
}             

Less允許我們運(yùn)用套嵌描述子元素樣式,寫法類似dom的層級(jí)關(guān)系

#header{
    width: @width * 5;
    height: @height;
    .border;
    a:first-child{
        color:@color;
    };
    a:last-of-type{
        color:blue;
    }
}

對(duì)于偽類選擇器,我們發(fā)現(xiàn)編譯后的樣式不正確

#header{
    display: inline;
    float: left;
    a{
        font-size: 26px;
        font-weight: bold;
        :hover{
            color:yellow;
        }
    }
}

這時(shí),我們只需要用&符號(hào),讓屬性連寫

#header{
    display: inline;
    float: left;
    a{
        font-size: 26px;
        font-weight: bold;
        &:hover{
            color:yellow;
        }
    }
}

2.5 函數(shù)

Less 提供了多種函數(shù)用于控制顏色變化谁帕、處理字符串、算術(shù)運(yùn)算等等

http://www.1024i.com/demo/less/reference.html

http://lesscss.cn/functions/

2.6 循環(huán)

less給我們提供了控制循環(huán)的API loop,類似于if...else語句,我們可以使用loop幫助我們完成css的編譯

比如說

.loop(@counter) when (@counter > 0) {
  .loop((@counter - 1));    // next iteration
  width: (10px * @counter); // code for each iteration
}

div {
  .loop(5); // launch the loop
}

對(duì)于我們曾經(jīng)自己寫過的boolstrap,嘗試控制循環(huán):

.loop(@n , @i: 1 ) when (@i <= @n) {
      .col-md-@{i} {
            width: (@i * 100% / @n); 
      }
      .loop( @n , (@i + 1) ); 
}
@media(max-width:992px){
    .loop(12);
}

注意 .loop是函數(shù)名,可以隨意定義,when相當(dāng)于if判斷

第三章 Sass

世界上最成熟冯袍、最穩(wěn)定匈挖、最強(qiáng)大的專業(yè)級(jí)CSS擴(kuò)展語言!(...)

http://sass-lang.com/

學(xué)習(xí)完了less,sass對(duì)我們來說也會(huì)很簡單

3.1 安裝sass

在windows上如果想要使用sass,我們需要配置ruby環(huán)境,首先安裝ruby,配置項(xiàng)選擇添加到環(huán)境變量中

安裝完畢,在控制臺(tái)輸入ruby -v可以查看安裝的ruby版本號(hào)

安裝完ruby后,就可以繼續(xù)安裝sass了

控制臺(tái)輸入gem install sass,sass會(huì)自動(dòng)安裝在你的全局環(huán)境中.

3.2 使用sass

SASS提供四個(gè)編譯風(fēng)格的選項(xiàng):

  • nested:嵌套縮進(jìn)的css代碼康愤,它是默認(rèn)值儡循。
  • expanded:沒有縮進(jìn)的、擴(kuò)展的css代碼征冷。
  • compact:簡潔格式的css代碼择膝。
  • compressed:壓縮后的css代碼。

我們使用默認(rèn)值即可.

在使用express時(shí),sass默認(rèn)風(fēng)格是sass,我們只需要略作更改,改做scss即可

sass test.scss 可以在命令行輸出編譯后的結(jié)果
sass test.scss test.css 可以將結(jié)果輸出為css文件.

sass在線編譯器 http://www.sassmeister.com/

3.3 變量

和less類似,sass也支持變量

$blue : #1875e7;
$width: 10px;
$height : 100px;
div{
    height:$height;
    width:$width;
    color : $blue;
}

同樣,變量也支持嵌套書寫

$side : left;
.rounded{
    border-#{$side}-radius: 5px;
}

注意外邊寫的是#號(hào),括號(hào)內(nèi)寫$side;

sass同樣也可以支持@import引入

@import '02.sass';
div{
    height:$height;
    width:$width;
    color : $blue;
}
$blue : #1875e7;
$width: 10px;
$height : 100px;

我們生成的css文件會(huì)有一個(gè)編譯目錄和sass.map文件,sass文件相當(dāng)于源文件检激,css相當(dāng)于編譯后的文件肴捉,當(dāng)檢查到頁面問題的時(shí)候腹侣,你看到的是css,但是需要修改的是sass文件齿穗,這個(gè)map就是兩個(gè)文件的對(duì)應(yīng)關(guān)系表傲隶。

3.4 計(jì)算

和less一致,sass也支持計(jì)算

#header{
    margin-top : (14px / 2);
    width : 100px + 50px;
    color : #FFF - #211;
}

3.5 套嵌

Sass同樣支持選擇器套嵌

#header {
    display: inline;
    float: left;
}
#header a {
    font-size: 26px;
    font-weight: bold;
}             
#header{
    display: inline;
    float: left;
    a{
        font-size: 26px;
        font-weight: bold;
    }
}

編譯出來的結(jié)果和less有所不同

#header {
  display: inline;
  float: left; }
  #header a {
    font-size: 26px;
    font-weight: bold; }

對(duì)于偽類選擇器,我們依舊用&符號(hào)鏈接

#header{
    display: inline;
    float: left;
    a{
        &:hover{
            color:yellow;
        }
        font-size: 26px;
        font-weight: bold;
    }
}

3.6 代碼繼承

Sass允許一個(gè)選擇器,繼承另一個(gè)選擇器,使用@extend繼承父類屬性

.class1{
    background:yellow;
}
.class2{
    @extend .class1;
    width : 100px;
    height : 10px;
}

3.7 代碼混用

類似less,sass也支持代碼混用,并支持傳入?yún)?shù),只是需要用到@mixin@include命令

@mixin color($v : yellow){
    background: $v;
}
#header {
    @include color(red);
}

3.8 控制結(jié)構(gòu)

for循環(huán)

Sass支持 if,for,while,each作為控制結(jié)構(gòu)用于數(shù)據(jù)輸出;

http://sass-lang.com/documentation/file.SASS_REFERENCE.html#control_directives__expressions

@media(max-width:992px){
    @for $i from 1 through 12 {
        .col-md-#{$i}{
            width : $i*100%/12;
            float : left;
        }
    } 
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末缤灵,一起剝皮案震驚了整個(gè)濱河市伦籍,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌腮出,老刑警劉巖帖鸦,帶你破解...
    沈念sama閱讀 206,126評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異胚嘲,居然都是意外死亡作儿,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門馋劈,熙熙樓的掌柜王于貴愁眉苦臉地迎上來攻锰,“玉大人,你說我怎么就攤上這事妓雾∪⑼蹋” “怎么了?”我有些...
    開封第一講書人閱讀 152,445評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵械姻,是天一觀的道長妒蛇。 經(jīng)常有香客問我,道長楷拳,這世上最難降的妖魔是什么绣夺? 我笑而不...
    開封第一講書人閱讀 55,185評(píng)論 1 278
  • 正文 為了忘掉前任,我火速辦了婚禮欢揖,結(jié)果婚禮上陶耍,老公的妹妹穿的比我還像新娘。我一直安慰自己她混,他們只是感情好烈钞,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,178評(píng)論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著坤按,像睡著了一般棵磷。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上晋涣,一...
    開封第一講書人閱讀 48,970評(píng)論 1 284
  • 那天仪媒,我揣著相機(jī)與錄音,去河邊找鬼。 笑死算吩,一個(gè)胖子當(dāng)著我的面吹牛留凭,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播偎巢,決...
    沈念sama閱讀 38,276評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼蔼夜,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了压昼?” 一聲冷哼從身側(cè)響起求冷,我...
    開封第一講書人閱讀 36,927評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎窍霞,沒想到半個(gè)月后匠题,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,400評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡但金,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,883評(píng)論 2 323
  • 正文 我和宋清朗相戀三年韭山,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片冷溃。...
    茶點(diǎn)故事閱讀 37,997評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡钱磅,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出似枕,到底是詐尸還是另有隱情盖淡,我是刑警寧澤,帶...
    沈念sama閱讀 33,646評(píng)論 4 322
  • 正文 年R本政府宣布凿歼,位于F島的核電站,受9級(jí)特大地震影響毅往,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜派近,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,213評(píng)論 3 307
  • 文/蒙蒙 一攀唯、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧渴丸,春花似錦侯嘀、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至土童,卻和暖如春诗茎,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背献汗。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評(píng)論 1 260
  • 我被黑心中介騙來泰國打工敢订, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留王污,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,423評(píng)論 2 352
  • 正文 我出身青樓楚午,卻偏偏與公主長得像昭齐,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子矾柜,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,722評(píng)論 2 345

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

  • LESS 參考資料:LESS官網(wǎng)w3cplus less入門教程 less的編譯 less特性及語法 變量——V...
    壽_司閱讀 2,403評(píng)論 0 0
  • 1.背景介紹 CSS 是一門非程序式語言租谈,沒有變量、函數(shù)捆愁、SCOPE(作用域)割去,需要書寫大量看似沒有邏輯的代碼,不...
    遠(yuǎn)望的云閱讀 32,136評(píng)論 3 35
  • 簡介 CSS(層疊樣式表)是一門歷史悠久的標(biāo)記性語言昼丑,同 HTML 一道呻逆,被廣泛應(yīng)用于萬維網(wǎng)(World Wide...
    老夫的天閱讀 1,925評(píng)論 1 29
  • 預(yù)防鼻炎小知識(shí) 1.擁有一個(gè)強(qiáng)健的體魄,疾病自然遠(yuǎn)離我們菩帝,所以日常進(jìn)行必要的鍛煉是很重要的咖城,身體鍛煉能提高我們的抵...
    陳裕金閱讀 147評(píng)論 0 0
  • 原文鏈接由于樹莓派并沒有傳統(tǒng)意義上的BIOS, 所以現(xiàn)在各種系統(tǒng)配置參數(shù)通常被存在"config.txt"這個(gè)文本...
    palytoxin閱讀 4,191評(píng)論 0 2