Sass 筆記

http://www.w3cplus.com/sassguide/
http://www.ruanyifeng.com/blog/2012/11/compass.html

基本特性

  • sass中可以定義變量,方便統(tǒng)一修改和維護(hù)
  • sass可以進(jìn)行選擇器的嵌套,表示層級(jí)關(guān)系
  • sass中如導(dǎo)入其他sass文件(可以使用導(dǎo)入文件的變量),最后編譯為一個(gè)css文件,優(yōu)于純css的@import
  • sass中可用mixin定義一些代碼片段,且可傳參數(shù),方便日后根據(jù)需求調(diào)用
<!--處理css3的前綴兼容輕松便捷 @mixin語法后面有介紹(ctrl + F)-->
@mixin box-sizing ($sizing) {
    -webkit-box-sizing:$sizing;     
       -moz-box-sizing:$sizing;
            box-sizing:$sizing;
}
.box-border{
    border:1px solid #ccc;
    @include box-sizing(border-box);
}
  • sass可通過@extend來實(shí)現(xiàn)代碼組合聲明,使代碼更加優(yōu)越簡潔
  • 進(jìn)行簡單的加減乘除運(yùn)算等
  • 集成了大量的顏色函數(shù)

安裝

  1. 首先安裝依賴環(huán)境ruby
  2. 打開ruby的cmd,執(zhí)行 gem install sass命令安裝sass
  3. 命令 sass style.scss style.css轉(zhuǎn)譯sass為css文件
    轉(zhuǎn)譯比較蛋疼,需要以管理員身份打開cmd或者打開ruby的cmd doss窗口,否則系統(tǒng)不識(shí)別sass命令(難道需要重啟?待確認(rèn))
  4. 單文件監(jiān)聽 sass --watch style.scss:style.css
  5. 文件夾監(jiān)聽命令 sass --watch sassFileDirectory:cssFileDirectory

工具

  • 官方在線轉(zhuǎn)換器
  • koala.exe 下載
  • sass監(jiān)聽
  • webstorm配置監(jiān)聽(設(shè)置-工具-文件監(jiān)聽器-添加sass或scss監(jiān)聽 注意修改Programe配置項(xiàng))
    ![4KKY@@_U{{54@4%Z0SJ`@8.png

注意 遇到中文無法監(jiān)聽通過的解決辦法

  1. 進(jìn)入【ruby安裝目錄\lib\ruby\gems\2.2.0\gems\sass-3.x.xx\lib\sass】;
    打開【engine.rb】文件添加 Encoding.default_external = Encoding.find('utf-8'),放在所有的 require "xxx"后面;
  1. sass內(nèi)部最前邊加上 @charset "UTF-8";

語法

參考文檔:http://www.w3cplus.com/sassguide/syntax.html

  1. 文件后綴名: sass(不適用大號(hào)和分號(hào)的語法,不推薦使用)和scss(類似css的語法,推薦)

  2. 導(dǎo)入@import "ScssFileNameWithoutSuffix": 編譯時(shí)會(huì)將@import的scss文件合并進(jìn)來只生成一個(gè)CSS文件,可以使用引用文件中定義的變量(把變量定義在一個(gè)文件,作為公共文件導(dǎo)入),可以減少瀏覽器http請(qǐng)求!

  3. 注釋:終于支持//行注釋了,css只支持塊狀注釋/*...*/

  4. 變量

    • 一般變量 $varName: value;(可以全局使用)
    • 默認(rèn)變量 $varName: value !default;(根據(jù)需求來覆蓋:重新聲明即可)
    • 特殊變量 如果變量作為屬性或在某些特殊情況下等則必須要以#{$variables}形式使用
    $borderDirection: top !default; 
    .border-#{$borderDirection}{
        border-#{$borderDirection}:1px solid #ccc;
    }
    
    • 全局變量 在變量值后面加上!global即為全局變量。(這個(gè)目前還用不上,等待新版本的sass設(shè)計(jì)好全局變量和局部變量的問題)
    • 多值變量 list map (看例子)
 $linkColor: #08c #333 !default; //第一個(gè)值為默認(rèn)值,第二個(gè)鼠標(biāo)滑過值
 a {
    color:nth($linkColor,1);
    &:hover{
        color:nth($linkColor,2);
        }
 }
  1. 嵌套(Nesting)
    • 選擇器嵌套:在一個(gè)選擇器中嵌套另一個(gè)選擇器來實(shí)現(xiàn)繼承
    • 屬性嵌套:屬性擁有同一個(gè)開始單詞...可以這么寫
.fakeshadow {
    border: {
        style: solid;
        left: {
          width: 4px;
          color: #888;
        }
        right: {
          width: 2px;
          color: #ccc;
        }
    }
}
- @at-root sass3.3.0中新增的功能,跳出所有的被嵌套選擇器
- @keyframes @media 等...
  1. 混合(mixin): 使用@mixin聲明混合,可以傳遞參數(shù),參數(shù)名以$符號(hào)開始,多個(gè)參數(shù)以逗號(hào)分開(注意不用逗號(hào)的可能是一個(gè)list參數(shù)),也可以給參數(shù)設(shè)置默認(rèn)值。聲明的@mixin通過@include來調(diào)用

     <!--sass style-->
    @mixin horizontal-line($border:1px dashed #ccc, $padding:10px){
        border-bottom:$border;
        padding-top:$padding;
        padding-bottom:$padding;  
    }
    .imgtext-h li{
        @include horizontal-line(1px solid #ccc);
    }
    .imgtext-h--product li{
        @include horizontal-line($padding:15px);
    }
    
    <!--to css style-->
    .imgtext-h li {
        border-bottom: 1px solid #cccccc;
        padding-top: 10px;
        padding-bottom: 10px;
    }
    .imgtext-h--product li {
        border-bottom: 1px dashed #cccccc;
        padding-top: 15px;
        padding-bottom: 15px;
    }
    
  2. 繼承:選擇器繼承可以讓選擇器繼承另一個(gè)選擇器的所有樣式,并聯(lián)合聲明。使用關(guān)鍵詞@extend,后面緊跟需要繼承的選擇器。
    占位選擇器%:如果不調(diào)用則不會(huì)有任何多余的css文件,避免了以前在一些基礎(chǔ)的文件中預(yù)定義了很多基礎(chǔ)的樣式,然后實(shí)際應(yīng)用中不管是否使用了@extend去繼承相應(yīng)的樣式,都會(huì)解析出來所有的樣式。占位選擇器以%標(biāo)識(shí)定義,通過@extend調(diào)用

  3. 內(nèi)置函數(shù):用的最多應(yīng)該是顏色函數(shù)(lighten減淡和darken加深,其調(diào)用方法為lighten($color,$amount)和darken($color,$amount))

  4. 自定義函數(shù): @fuction,@return

    $baseFontSize:      10px !default;
    $gray:              #ccc !defualt;        
    
    // pixels to rems 
    @function pxToRem($px) {
      @return $px / $baseFontSize * 1rem;
    }
    
    body{
      font-size:$baseFontSize;
      color:lighten($gray,10%);
    }
    .test{
      font-size:pxToRem(16px);
      color:darken($gray,10%);
    }
    
  5. 運(yùn)算:對(duì)數(shù)值型的Value(如:數(shù)字、顏色、變量等)進(jìn)行加減乘除四則運(yùn)算

  6. 條件語句 @if @else if @else ;
    三目運(yùn)算:if($condition, $if_true, 三個(gè)參數(shù)分別表示:條件,條件為真的值,條件為假的值。

``` css
$lte7: true;
$type: monster;
.ib{
    display:inline-block;
    @if $lte7 {
        *display:inline;
        *zoom:1;
    }
}
p {
  @if $type == ocean {
    color: blue;
  } @else if $type == matador {
    color: red;
  } @else if $type == monster {
    color: green;
  } @else {
    color: black;
  }
}

//css style
//-------------------------------
.ib{
    display:inline-block;
    *display:inline;
    *zoom:1;
}
p {
  color: green; 
}
```
  1. for循環(huán)
    @for $var from <start> through <end>
    @for $var from <start> to <end>
    $i表示變量,start表示起始值,end表示結(jié)束值
    這兩個(gè)的區(qū)別是關(guān)鍵字through表示包括end這個(gè)數(shù),to則不包括end這個(gè)數(shù)。
``` css
//sass style 
@for $i from 1 through 3 {
  .item-#{$i} { width: 2em * $i; }
}

//to css style 
.item-1 {
  width: 2em; 
}
.item-2 {
  width: 4em; 
}
.item-3 {
  width: 6em; 
}
```
  1. each循環(huán) (可以參考css精靈生成的sass代碼,雷同呢~~)
    @each $var in <list or map>
    $var表示變量,list和map表示list類型數(shù)據(jù)和map類型數(shù)據(jù)
``` css
//sass style 
$animal-list: puma, sea-slug, egret;
@each $animal in $animal-list {
  .#{$animal}-icon {
    background-image: url('/images/#{$animal}.png');
  }
}

//css style 
.puma-icon {
  background-image: url('/images/puma.png'); 
}
.sea-slug-icon {
  background-image: url('/images/sea-slug.png'); 
}
.egret-icon {
  background-image: url('/images/egret.png'); 
}
```

``` css
//sass style
//-------------------------------
$headings: (h1: 2em, h2: 1.5em, h3: 1.2em);
@each $header, $size in $headings {
  #{$header} {
    font-size: $size;
  }
}

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

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