sass的使用

前言

在介紹之前,請大家先弄清楚下面的問題:

  • 什么是 sass
    sass 是 css 的預(yù)處理器(css preprocessor)

  • 為什么使用 sass
    1坞笙、 它能夠幫我們更快更高效的編寫更好維護的 css 岩饼。
    2荚虚、 它自帶很多原生 css 沒有的功能,如變量(現(xiàn)在 css 中已經(jīng)實現(xiàn))籍茧、條件語句等

  • 如何使用sass
    1版述、 安裝 sass :ruby環(huán)境、sass編譯
    2寞冯、 sass的語法

下面要介紹的就是 sass 的基本用法渴析。

一、安裝和使用

1.1 安裝Ruby

SASS是 Ruby 語言寫的吮龄,但是兩者的語法沒有關(guān)系俭茧。不懂Ruby,照樣使用漓帚。只是必須先安裝Ruby

1.2 安裝SASS

在命令行輸入下面的命令(必須先安裝Ruby):

 gem install sass

1.3 文件后綴

sass 有兩種后綴名文件:

  • 一種后綴名為 sass母债,不使用大括號和分號;
  • 另一種就是 scss 文件
    和我們平時寫的 css 文件格式差不多尝抖,使用大括號和分號场斑。
//文件后綴名為sass的語法
body
  background: #eee
  font-size:12px
p
  background: #0982c1

//文件后綴名為scss的語法  
body {
  background: #eee;
  font-size:12px;
}
p{
  background: #0982c1;
} 

在此也建議使用后綴名為 scss 的文件,以避免 sass 后綴名的嚴(yán)格格式要求報錯牵署。后面使用的也都是 scss 文件漏隐。

1.4 編譯

在屏幕上顯示.scss文件轉(zhuǎn)化的css代碼:

 sass 文件名.scss

編譯到 css 文件:

 sass test.scss test.css

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

  • nested:嵌套縮進的css代碼,它是默認值奴迅。
  • expanded:沒有縮進的青责、擴展的css代碼。
  • compact:簡潔格式的css代碼取具。
  • compressed:壓縮后的css代碼脖隶。

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

 sass --style compressed test.sass test.css

監(jiān)聽某個文件或目錄产阱,一旦源文件有變動,就自動生成編譯后的版本块仆。

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

如果你不喜歡用命令行构蹬,可以使用:

GUI界面編譯工具:koala
教程:Less/Sass編譯工具,koala使用指南

二悔据、基本語法

2.1 嵌套規(guī)則

  • 選擇器嵌套庄敛。
//CSS代碼
div h1 {
 color : red;
}
//SASS代碼
div {
 hi {
  color:red;
 }
}
  • 屬性嵌套
p {
 border: {
  color: red;
 }
}

注意border后面必須加上冒號。

  • 使用&引用父元素
a {
 &:hover { color: #ffb3ff; }   //常用寫法
    .class & {color:  #fff;}   //在前面加上特殊類或父元素的寫法
}

2.2 變量

  • 以$開頭聲明變量
$blue : #1875e7; 
div {
 color : $blue;//直接使用
}
  • 變量寫在#{}中以鑲嵌入字符串
$side : left;
.rounded {
 border-#{$side}-radius: 5px;
}
  • 變量名用中劃線分隔
    sass中變量名的分隔并沒有要求科汗,而且使用中劃線或下劃線藻烤,會指向同一個變量。
    但是,盡量使用中劃線來統(tǒng)一規(guī)范怖亭。

  • 變量作用域
    sass 中變量聲明在某個規(guī)則塊 { } 中涎显,則只能在那個規(guī)則塊內(nèi)使用。定義在規(guī)則塊外的兴猩,即此文件都可以使用期吓。一般將變量聲明放在文件最前面或者獨立一個文件。

  • 其他

請參考:sass語法

2.3 計算功能

在代碼中使用算式:

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

注意: 除了/之外峭跳,其他都應(yīng)該在符號兩邊加上空格

2.4 注釋

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

  • 標(biāo)準(zhǔn)的CSS注釋 /* comment */ 缺前,會保留到編譯后的文件蛀醉。
  • 單行注釋 // comment,只保留在SASS源文件中衅码,編譯后被省略拯刁。

在 /* 后面加一個感嘆號,表示這是"重要注釋"逝段。即使是壓縮模式編譯垛玻,也會保留這行注釋,通衬糖可以用于聲明版權(quán)信息帚桩。

/*! 
 重要注釋!
*/

2.5 導(dǎo)入文件

@import命令嘹黔,用來插入外部文件账嚎。

  • scss文件,編譯后會合并到同一個 css 文件中
@import "path/filename.scss";
  • css 文件儡蔓,則等同于 css 的 import 命令郭蕉,編譯后依然是導(dǎo)入文件
@import "foo.css";

因為 css 中 import 會導(dǎo)致性能問題搁骑,所以一般不使用凭豪。

2.6 繼承

SASS允許一個選擇器,繼承另一個選擇器揣钦。使用@extend命令:

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

2.7 mixin

mixin 有點像C語言的宏(macro)获询,是可以重用的代碼塊涨岁。

  • 使用@mixin命令,定義一個代碼塊吉嚣。
@mixin left {
 float: left;
 margin-left: 10px;
}
  • 使用@include命令卵惦,調(diào)用這個mixin。
div {
 @include left;
}

mixin的強大之處瓦戚,在于可以指定參數(shù)和缺省值沮尿。

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

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

div {
 @include left(20px);
}

mixin 里面不僅可以定義屬性,還可以使用 css 規(guī)則畜疾,包含選擇器等

注意:mixin 不能濫用赴邻,會導(dǎo)致性能問題。詳情請查看Sass中文網(wǎng)

2.8 顏色函數(shù)

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

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

三、高級用法

3.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;
}

3.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");
 }
}

3.3 自定義函數(shù)

SASS允許用戶編寫自己的函數(shù)彤敛。

@function double($n) {
 @return $n * 2;
}
#sidebar {
 width: double(5px);
}

參考

Sass中文網(wǎng)
Sass用法指南
Sass Guide

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市了赌,隨后出現(xiàn)的幾起案子墨榄,更是在濱河造成了極大的恐慌,老刑警劉巖勿她,帶你破解...
    沈念sama閱讀 217,657評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件袄秩,死亡現(xiàn)場離奇詭異,居然都是意外死亡逢并,警方通過查閱死者的電腦和手機之剧,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評論 3 394
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來砍聊,“玉大人背稼,你說我怎么就攤上這事〔r颍” “怎么了蟹肘?”我有些...
    開封第一講書人閱讀 164,057評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長灶伊。 經(jīng)常有香客問我疆前,道長,這世上最難降的妖魔是什么聘萨? 我笑而不...
    開封第一講書人閱讀 58,509評論 1 293
  • 正文 為了忘掉前任竹椒,我火速辦了婚禮,結(jié)果婚禮上米辐,老公的妹妹穿的比我還像新娘胸完。我一直安慰自己,他們只是感情好翘贮,可當(dāng)我...
    茶點故事閱讀 67,562評論 6 392
  • 文/花漫 我一把揭開白布赊窥。 她就那樣靜靜地躺著,像睡著了一般狸页。 火紅的嫁衣襯著肌膚如雪锨能。 梳的紋絲不亂的頭發(fā)上扯再,一...
    開封第一講書人閱讀 51,443評論 1 302
  • 那天,我揣著相機與錄音址遇,去河邊找鬼熄阻。 笑死,一個胖子當(dāng)著我的面吹牛倔约,可吹牛的內(nèi)容都是我干的秃殉。 我是一名探鬼主播,決...
    沈念sama閱讀 40,251評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼浸剩,長吁一口氣:“原來是場噩夢啊……” “哼钾军!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起绢要,我...
    開封第一講書人閱讀 39,129評論 0 276
  • 序言:老撾萬榮一對情侶失蹤吏恭,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后袖扛,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體砸泛,經(jīng)...
    沈念sama閱讀 45,561評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡十籍,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,779評論 3 335
  • 正文 我和宋清朗相戀三年蛆封,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片勾栗。...
    茶點故事閱讀 39,902評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡惨篱,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出围俘,到底是詐尸還是另有隱情砸讳,我是刑警寧澤,帶...
    沈念sama閱讀 35,621評論 5 345
  • 正文 年R本政府宣布界牡,位于F島的核電站簿寂,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏宿亡。R本人自食惡果不足惜常遂,卻給世界環(huán)境...
    茶點故事閱讀 41,220評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望挽荠。 院中可真熱鬧克胳,春花似錦、人聲如沸圈匆。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽跃赚。三九已至笆搓,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背满败。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評論 1 269
  • 我被黑心中介騙來泰國打工窘奏, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人葫录。 一個月前我還...
    沈念sama閱讀 48,025評論 2 370
  • 正文 我出身青樓着裹,卻偏偏與公主長得像,于是被迫代替她去往敵國和親米同。 傳聞我的和親對象是個殘疾皇子骇扇,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,843評論 2 354

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