Sass安裝及使用

學(xué)過CSS的人都知道,它不是一種編程語言财破。
你可以用它開發(fā)網(wǎng)頁樣式掰派,但是沒法用它編程。也就是說左痢,CSS基本上是設(shè)計師的工具靡羡,不是程序員的工具。在程序員眼里俊性,CSS是一件很麻煩的東西亿眠。它沒有變量,也沒有條件語句磅废,只是一行行單純的描述,寫起來相當(dāng)費事荆烈。


很自然地拯勉,有人就開始為CSS加入編程元素,這被叫做"CSS預(yù)處理器"(css preprocessor)憔购。它的基本思想是宫峦,用一種專門的編程語言,進(jìn)行網(wǎng)頁樣式設(shè)計玫鸟,然后再編譯成正常的CSS文件导绷。
各種"CSS預(yù)處理器"之中,我自己最喜歡SASS屎飘,覺得它有很多優(yōu)點妥曲,打算以后都用它來寫CSS。下面是我整理的用法總結(jié)钦购,供自己開發(fā)時參考檐盟,相信對其他人也有用。

SASS用法指南

一押桃、什么是SASS
SASS是一種CSS的開發(fā)工具葵萎,提供了許多便利的寫法,大大節(jié)省了設(shè)計者的時間,使得CSS的開發(fā)羡忘,變得簡單和可維護(hù)谎痢。
本文總結(jié)了SASS的主要用法。我的目標(biāo)是卷雕,有了這篇文章节猿,日常的一般使用就不需要去看官方文檔了。
二爽蝴、安裝和使用
2.1 安裝
SASS是Ruby語言寫的沐批,但是兩者的語法沒有關(guān)系。不懂Ruby蝎亚,照樣使用九孩。只是必須先安裝Ruby,然后再安裝SASS发框。
假定你已經(jīng)安裝好了Ruby躺彬,接著在命令行輸入下面的命令:

gem install sass

然后,就可以使用了梅惯。
2.2 使用
SASS文件就是普通的文本文件宪拥,里面可以直接使用CSS語法。文件后綴名是.scss铣减,意思為Sassy CSS她君。
下面的命令,可以在屏幕上顯示.scss文件轉(zhuǎn)化的css代碼葫哗。(假設(shè)文件名為test缔刹。)

sass test.scss

如果要將顯示結(jié)果保存成文件,后面再跟一個.css文件名劣针。

sass test.scss test.css

SASS提供四個編譯風(fēng)格的選項:
* nested:嵌套縮進(jìn)的css代碼校镐,它是默認(rèn)值。
* expanded:沒有縮進(jìn)的捺典、擴(kuò)展的css代碼鸟廓。
* compact:簡潔格式的css代碼。
* compressed:壓縮后的css代碼襟己。

生產(chǎn)環(huán)境當(dāng)中引谜,一般使用最后一個選項。

sass --style compressed test.sass test.css

你也可以讓SASS監(jiān)聽某個文件或目錄擎浴,一旦源文件有變動煌张,就自動生成編譯后的版本。

// watch a file
  sass --watch input.scss:output.css
// watch a directory
  sass --watch app/sass:public/stylesheets

SASS的官方網(wǎng)站退客,提供了一個在線轉(zhuǎn)換器骏融。你可以在那里链嘀,試運行下面的各種例子。
三档玻、基本用法
3.1 變量
SASS允許使用變量怀泊,所有變量以$開頭。

$blue : #1875e7; 
div {   color : $blue;  }

如果變量需要鑲嵌在字符串之中误趴,就必須需要寫在#{}之中霹琼。

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

3.2 計算功能
SASS允許在代碼中使用算式:

body { margin: (14px/2); top: 50px + 100px; right: $var * 10%;  }

3.3 嵌套
SASS允許選擇器嵌套。比如凉当,下面的CSS代碼:

div h1 { color : red; }

可以寫成:

div { hi {  color:red; }   }

屬性也可以嵌套枣申,比如border-color屬性,可以寫成:

 p {  border:   color: red;  }  }

注意看杭,border后面必須加上冒號忠藤。
在嵌套的代碼塊內(nèi),可以使用&引用父元素楼雹。比如a:hover偽類模孩,可以寫成:

a {  &:hover { color: #ffb3ff; }  }

3.4 注釋
SASS共有兩種注釋風(fēng)格。

標(biāo)準(zhǔn)的CSS注釋 /* comment */ 贮缅,會保留到編譯后的文件榨咐。
單行注釋 // comment,只保留在SASS源文件中谴供,編譯后被省略块茁。
在/*后面加一個感嘆號,表示這是"重要注釋"桂肌。
即使是壓縮模式編譯数焊,也    會保留這行注釋,通持峄颍可以用于聲明版權(quán)信息。
/*!     重要注釋仰禀!  */

四照雁、代碼的重用
4.1 繼承
SASS允許一個選擇器,繼承另一個選擇器答恶。比如饺蚊,現(xiàn)有class1:

.class1 {  border: 1px solid #ddd;  }

class2要繼承class1,就要使用@extend命令:

.class2 {  @extend .class1;  font-size:120%;  }

4.2 Mixin
Mixin有點像C語言的宏(macro)悬嗓,是可以重用的代碼塊污呼。
使用@mixin命令,定義一個代碼塊包竹。

@mixin left {  float: left;  margin-left: 10px;  }

使用@include命令燕酷,調(diào)用這個mixin籍凝。

div {  @include left;  }

mixin的強(qiáng)大之處,在于可以指定參數(shù)和缺省值苗缩。

@mixin left($value: 10px) {  float: left;  margin-right: $value;  }

使用的時候饵蒂,根據(jù)需要加入?yún)?shù):

div {  @include left(20px);  }

下面是一個mixin的實例,用來生成瀏覽器前綴酱讶。

@mixin rounded($vert, $horz, $radius: 10px) {  
    border-#{$vert}-#{$horz}-radius: $radius;
    -moz-border-radius-#{$vert}#{$horz}: $radius;
    -webkit-border-#{$vert}-#{$horz}-radius: $radius; 
 }

使用的時候退盯,可以像下面這樣調(diào)用:
  
#navbar li { @include rounded(top, left); }
#footer { @include rounded(top, left, 5px); }

4.3 顏色函數(shù)
SASS提供了一些內(nèi)置的顏色函數(shù),以便生成系列顏色泻肯。

lighten(#cc3, 10%) // #d6d65c  
darken(#cc3, 10%) // #a3a329  
grayscale(#cc3) // #808080  
complement(#cc3) // #33c

4.4 插入文件
@import命令渊迁,用來插入外部文件。

@import "path/filename.scss";

如果插入的是.css文件灶挟,則等同于css的import命令琉朽。

@import "foo.css";

五、高級用法
5.1 條件語句
@if可以用來判斷:

p { 
   @if 1 + 1 == 2 { border: 1px solid; }
   @if 5 < 3 { border: 2px dotted; }  
}

配套的還有@else命令:

@if lightness($color) > 30% {
    background-color: #000;  
} @else {    
    background-color: #fff;  
}

5.2 循環(huán)語句
SASS支持for循環(huán):

@for $i from 1 to 10 {    
    .border-#{$i} {      
        border: #{$i}px solid blue;   
    }  
}

也支持while循環(huán):

$i: 6;
@while $i > 0 {    
    .item-#{$i} { width: 2em * $i; }
    $i: $i - 2;  
}

each命令膏萧,作用與for類似:

@each $member in a, b, c, d {    
    .#{$member} {      
        background-image: url("/image/#{$member}.jpg");    
    }
}

5.3 自定義函數(shù)
SASS允許用戶編寫自己的函數(shù)漓骚。

@function double($n) {    
    @return $n * 2;  
}
#sidebar {  width: double(5px);  }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市榛泛,隨后出現(xiàn)的幾起案子蝌蹂,更是在濱河造成了極大的恐慌,老刑警劉巖曹锨,帶你破解...
    沈念sama閱讀 216,692評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件孤个,死亡現(xiàn)場離奇詭異,居然都是意外死亡沛简,警方通過查閱死者的電腦和手機(jī)齐鲤,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,482評論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來椒楣,“玉大人给郊,你說我怎么就攤上這事∨趸遥” “怎么了淆九?”我有些...
    開封第一講書人閱讀 162,995評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長毛俏。 經(jīng)常有香客問我炭庙,道長,這世上最難降的妖魔是什么煌寇? 我笑而不...
    開封第一講書人閱讀 58,223評論 1 292
  • 正文 為了忘掉前任焕蹄,我火速辦了婚禮,結(jié)果婚禮上阀溶,老公的妹妹穿的比我還像新娘腻脏。我一直安慰自己鸦泳,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,245評論 6 388
  • 文/花漫 我一把揭開白布迹卢。 她就那樣靜靜地躺著辽故,像睡著了一般。 火紅的嫁衣襯著肌膚如雪腐碱。 梳的紋絲不亂的頭發(fā)上誊垢,一...
    開封第一講書人閱讀 51,208評論 1 299
  • 那天,我揣著相機(jī)與錄音症见,去河邊找鬼喂走。 笑死,一個胖子當(dāng)著我的面吹牛谋作,可吹牛的內(nèi)容都是我干的芋肠。 我是一名探鬼主播,決...
    沈念sama閱讀 40,091評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼遵蚜,長吁一口氣:“原來是場噩夢啊……” “哼帖池!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起吭净,我...
    開封第一講書人閱讀 38,929評論 0 274
  • 序言:老撾萬榮一對情侶失蹤睡汹,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后寂殉,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體囚巴,經(jīng)...
    沈念sama閱讀 45,346評論 1 311
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,570評論 2 333
  • 正文 我和宋清朗相戀三年友扰,在試婚紗的時候發(fā)現(xiàn)自己被綠了彤叉。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,739評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡村怪,死狀恐怖秽浇,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情甚负,我是刑警寧澤柬焕,帶...
    沈念sama閱讀 35,437評論 5 344
  • 正文 年R本政府宣布,位于F島的核電站腊敲,受9級特大地震影響击喂,放射性物質(zhì)發(fā)生泄漏维苔。R本人自食惡果不足惜碰辅,卻給世界環(huán)境...
    茶點故事閱讀 41,037評論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望介时。 院中可真熱鬧没宾,春花似錦凌彬、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,677評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至会钝,卻和暖如春伐蒋,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背迁酸。 一陣腳步聲響...
    開封第一講書人閱讀 32,833評論 1 269
  • 我被黑心中介騙來泰國打工先鱼, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人奸鬓。 一個月前我還...
    沈念sama閱讀 47,760評論 2 369
  • 正文 我出身青樓焙畔,卻偏偏與公主長得像,于是被迫代替她去往敵國和親串远。 傳聞我的和親對象是個殘疾皇子宏多,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,647評論 2 354

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