Sass用法指南

作者:阮一峰
原文出處:http://www.ruanyifeng.com/blog/2012/06/sass.html

學(xué)過CSS的人都知道逢防,它不是一種編程語言惕蹄。

你可以用它開發(fā)網(wǎng)頁樣式捧灰,但是沒法用它編程赫模。也就是說麻顶,CSS基本上是設(shè)計師的工具,不是程序員的工具压鉴。在程序員眼里,CSS是一件很麻煩的東西锻拘。它沒有變量油吭,也沒有條件語句,只是一行行單純的描述署拟,寫起來相當(dāng)費(fèi)事上鞠。

很自然地,有人就開始為CSS加入編程元素芯丧,這被叫做"CSS預(yù)處理器"(css preprocessor)芍阎。它的基本思想是,用一種專門的編程語言缨恒,進(jìn)行網(wǎng)頁樣式設(shè)計谴咸,然后再編譯成正常的CSS文件。

各種"CSS預(yù)處理器"之中骗露,我自己最喜歡SASS岭佳,覺得它有很多優(yōu)點(diǎn),打算以后都用它來寫CSS萧锉。下面是我整理的用法總結(jié)珊随,供自己開發(fā)時參考,相信對其他人也有用柿隙。

一叶洞、什么是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)格的選項(xiàng):

  • nested:嵌套縮進(jìn)的css代碼,它是默認(rèn)值诵次。
  • expanded:沒有縮進(jìn)的账蓉、擴(kuò)展的css代碼。
  • compact:簡潔格式的css代碼逾一。
  • compressed:壓縮后的css代碼铸本。

生產(chǎn)環(huán)境當(dāng)中,一般使用最后一個選項(xià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)換器。你可以在那里限番,試運(yù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有點(diǎn)像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的實(shí)例冤留,用來生成瀏覽器前綴。

  @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閱讀 212,718評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異逊彭,居然都是意外死亡咸灿,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,683評論 3 385
  • 文/潘曉璐 我一進(jìn)店門侮叮,熙熙樓的掌柜王于貴愁眉苦臉地迎上來避矢,“玉大人,你說我怎么就攤上這事囊榜∩笮兀” “怎么了?”我有些...
    開封第一講書人閱讀 158,207評論 0 348
  • 文/不壞的土叔 我叫張陵卸勺,是天一觀的道長砂沛。 經(jīng)常有香客問我,道長曙求,這世上最難降的妖魔是什么碍庵? 我笑而不...
    開封第一講書人閱讀 56,755評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮悟狱,結(jié)果婚禮上静浴,老公的妹妹穿的比我還像新娘。我一直安慰自己挤渐,他們只是感情好苹享,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,862評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著浴麻,像睡著了一般得问。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上白胀,一...
    開封第一講書人閱讀 50,050評論 1 291
  • 那天椭赋,我揣著相機(jī)與錄音,去河邊找鬼或杠。 笑死,一個胖子當(dāng)著我的面吹牛宣蔚,可吹牛的內(nèi)容都是我干的向抢。 我是一名探鬼主播认境,決...
    沈念sama閱讀 39,136評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼挟鸠!你這毒婦竟也來了叉信?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,882評論 0 268
  • 序言:老撾萬榮一對情侶失蹤艘希,失蹤者是張志新(化名)和其女友劉穎硼身,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體覆享,經(jīng)...
    沈念sama閱讀 44,330評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡佳遂,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,651評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了撒顿。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片丑罪。...
    茶點(diǎn)故事閱讀 38,789評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖凤壁,靈堂內(nèi)的尸體忽然破棺而出吩屹,到底是詐尸還是另有隱情,我是刑警寧澤拧抖,帶...
    沈念sama閱讀 34,477評論 4 333
  • 正文 年R本政府宣布煤搜,位于F島的核電站,受9級特大地震影響唧席,放射性物質(zhì)發(fā)生泄漏宅楞。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,135評論 3 317
  • 文/蒙蒙 一袱吆、第九天 我趴在偏房一處隱蔽的房頂上張望厌衙。 院中可真熱鬧,春花似錦绞绒、人聲如沸婶希。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,864評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽喻杈。三九已至,卻和暖如春狰晚,著一層夾襖步出監(jiān)牢的瞬間筒饰,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,099評論 1 267
  • 我被黑心中介騙來泰國打工壁晒, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留瓷们,地道東北人。 一個月前我還...
    沈念sama閱讀 46,598評論 2 362
  • 正文 我出身青樓,卻偏偏與公主長得像谬晕,于是被迫代替她去往敵國和親碘裕。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,697評論 2 351

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

  • 學(xué)過CSS的人都知道攒钳,它并不是一種編程語言帮孔。 你可以用它開發(fā)網(wǎng)頁樣式,但是沒法用它編程不撑。也就是說文兢,CSS基本上是設(shè)...
    小小奶狗閱讀 292評論 0 0
  • 一、什么是SASS SASS是一種CSS的開發(fā)工具焕檬,提供了許多便利的寫法姆坚,大大節(jié)省了設(shè)計者的時間,使得CSS的開發(fā)...
    劉佳音閱讀 378評論 0 1
  • 3.移動端前端基礎(chǔ)架構(gòu) 15:16單詞釋義:a)mkdir: make directory 建立一個新的子目錄(...
    小豌豆書吧閱讀 892評論 0 1
  • [toc] 前言 本文所有的演示都是基于Win10操作系統(tǒng)。 關(guān)于Sass 1.定義 Sass的學(xué)名叫“CSS預(yù)處...
    崔小叨閱讀 18,242評論 0 78
  • 1爆侣、SCSS 是 Sass 的新語法格式萍程,從外形上來判斷他和 CSS 長得幾乎是一模一樣,代碼都包裹在一對大括號里...
    夜幕小草閱讀 1,707評論 2 10