Less/Sass

Less 和 Sass

第一章 Less和Sass簡(jiǎn)介

Less和Sass都為動(dòng)態(tài)樣式表的語(yǔ)言,即css框架,通過(guò)簡(jiǎn)潔明了的語(yǔ)法定義,使得編寫CSS的工作變得非常簡(jiǎn)單。

第二章 Less

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

2.1 配置

在服務(wù)器配置less非常簡(jiǎn)單,只需要安裝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語(yǔ)句,我們可以使用loop幫助我們完成css的編譯

比如說(shuō)

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

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

對(duì)于我們?cè)?jīng)自己寫過(guò)的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ò)展語(yǔ)言!(...)

http://sass-lang.com/

學(xué)習(xí)完了less,sass對(duì)我們來(lái)說(shuō)也會(huì)很簡(jiǎn)單

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:簡(jiǎn)潔格式的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)檢查到頁(yè)面問(wèn)題的時(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;
    }
}

編譯出來(lái)的結(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)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,923評(píng)論 6 535
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,740評(píng)論 3 420
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人,你說(shuō)我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,856評(píng)論 0 380
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,175評(píng)論 1 315
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 71,931評(píng)論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,321評(píng)論 1 324
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,383評(píng)論 3 443
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,533評(píng)論 0 289
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,082評(píng)論 1 335
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 40,891評(píng)論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 43,067評(píng)論 1 371
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,618評(píng)論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,319評(píng)論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,732評(píng)論 0 27
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,987評(píng)論 1 289
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 51,794評(píng)論 3 394
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 48,076評(píng)論 2 375

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

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