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是一種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);
      }

來源:阮一峰的網(wǎng)絡(luò)日志

http://www.ruanyifeng.com/blog/2012/06/sass.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末营曼,一起剝皮案震驚了整個濱河市乒验,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌蒂阱,老刑警劉巖锻全,帶你破解...
    沈念sama閱讀 211,817評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異录煤,居然都是意外死亡鳄厌,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,329評論 3 385
  • 文/潘曉璐 我一進(jìn)店門妈踊,熙熙樓的掌柜王于貴愁眉苦臉地迎上來了嚎,“玉大人,你說我怎么就攤上這事廊营⊥嵊荆” “怎么了?”我有些...
    開封第一講書人閱讀 157,354評論 0 348
  • 文/不壞的土叔 我叫張陵露筒,是天一觀的道長呐伞。 經(jīng)常有香客問我,道長慎式,這世上最難降的妖魔是什么荸哟? 我笑而不...
    開封第一講書人閱讀 56,498評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮瞬捕,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘舵抹。我一直安慰自己肪虎,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,600評論 6 386
  • 文/花漫 我一把揭開白布惧蛹。 她就那樣靜靜地躺著扇救,像睡著了一般刑枝。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上迅腔,一...
    開封第一講書人閱讀 49,829評論 1 290
  • 那天装畅,我揣著相機(jī)與錄音,去河邊找鬼沧烈。 笑死掠兄,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的锌雀。 我是一名探鬼主播蚂夕,決...
    沈念sama閱讀 38,979評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼腋逆!你這毒婦竟也來了婿牍?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,722評論 0 266
  • 序言:老撾萬榮一對情侶失蹤惩歉,失蹤者是張志新(化名)和其女友劉穎等脂,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體撑蚌,經(jīng)...
    沈念sama閱讀 44,189評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡上遥,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,519評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了锨并。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片露该。...
    茶點故事閱讀 38,654評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖第煮,靈堂內(nèi)的尸體忽然破棺而出解幼,到底是詐尸還是另有隱情,我是刑警寧澤包警,帶...
    沈念sama閱讀 34,329評論 4 330
  • 正文 年R本政府宣布撵摆,位于F島的核電站,受9級特大地震影響害晦,放射性物質(zhì)發(fā)生泄漏特铝。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,940評論 3 313
  • 文/蒙蒙 一壹瘟、第九天 我趴在偏房一處隱蔽的房頂上張望鲫剿。 院中可真熱鬧,春花似錦稻轨、人聲如沸灵莲。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,762評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽政冻。三九已至枚抵,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間明场,已是汗流浹背汽摹。 一陣腳步聲響...
    開封第一講書人閱讀 31,993評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留苦锨,地道東北人逼泣。 一個月前我還...
    沈念sama閱讀 46,382評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像逆屡,于是被迫代替她去往敵國和親圾旨。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,543評論 2 349

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

  • 前言 什么是CSS預(yù)處理器 定義:CSS預(yù)處理器定義了一種新的語言魏蔗,其基本思想是砍的,用一種專門的編程語言,為CSS增...
    SA_Arthur閱讀 3,117評論 0 18
  • 1莺治、SCSS 是 Sass 的新語法格式廓鞠,從外形上來判斷他和 CSS 長得幾乎是一模一樣,代碼都包裹在一對大括號里...
    夜幕小草閱讀 1,707評論 2 10
  • 一谣旁、什么是SASS SASS是一種CSS的開發(fā)工具床佳,提供了許多便利的寫法,大大節(jié)省了設(shè)計者的時間榄审,使得CSS的開發(fā)...
    劉佳音閱讀 378評論 0 1
  • 基礎(chǔ) 聲明變量 普通變量 默認(rèn)變量 變量覆蓋:只需要在默認(rèn)變量之前重新聲明下變量即可 變量的調(diào)用 局部變量和全局變...
    Jill1231閱讀 1,270評論 0 1
  • 學(xué)習(xí)Sass(官網(wǎng):Sass)之前需要了解什么是Sass,Sass全稱:Syntactically Awesome...
    haoxilu閱讀 486評論 0 3