sass 學(xué)習(xí)筆記

Sass

安裝Sass

  1. 安裝Ruby:
  2. 安裝Sass: gem install sass
  3. 安裝Compass:sudo gem install compass

創(chuàng)建工程

  1. 使用Sass創(chuàng)建: 隨便創(chuàng)建個文件夾就是使用sass創(chuàng)建了個工程
  2. 使用Compass創(chuàng)建: compass create <ProjName>

使用命令行

  1. 編譯Scss: sass demo.scss demo.css
  2. 監(jiān)視Sass文件: sass --watch demo.scss:demo.css
  3. 監(jiān)視文件夾: sass --watch <sass folder>:<css folder>
  4. 編譯Sass: compass compile [--force]
  5. 監(jiān)視文件夾: compass watch
  6. 四種輸出風(fēng)格(style): nested expanded compact compressed
    • sass <sass file> <css file> --style
      eg: compass compile [--force] -s compressed

定義變量

  1. 變量:
    div {
        $color: red; 
        color: $color
     }```
    
  2. 全局變量:
    $color: red !global; 
    div {
        color:$color
     }```
    
  3. 默認(rèn)變量:
    $fontSize: 16px !default; 
    div {
        font-size:$fontSize
     }```
    
  4. 多指變量:
    $paddings: 2px 3px 4px 5px; 
    div {
        padding: $paddings; 
        padding-left: nth($paddings,1)
     }
     $mapcolors:(redcolor:red, bluecolor:blue);
     div {
         color: map-get($mapcolors, redcolor)
     }
    
  5. 變量特殊用法:
    $classname: container;
    .#{$classname} {
         color: red
     }
    

導(dǎo)入樣式文件

  1. 部分文件:
    命名'_'開頭 eg:_demo.scss(編譯時不會被生成css文件)
  2. 嵌套導(dǎo)入:
  • @import '_ddemo.scss'
    or
    @import 'ddemo'
  1. 原生CSS導(dǎo)入
    • 被導(dǎo)入文件的名字以.css結(jié)尾:
      @import 'demo.css';
    • 被導(dǎo)入文件的名字是一個url地址:
      @import 'http://xxx/demo.css';
    • 被導(dǎo)入文件的名字是CSS的url()值:
      @import url(demo.css);

嵌套

  1. 選擇器嵌套
    div {
         span{
             color: red
         }
     }
    
  2. 屬性嵌套
     div {
         background: {
             color: red;
             size: 100% 50%;
         }
     }
    
  3. & -- 引用父選擇器
     a {
         color: red;
         &:hover {
             color: blue
         }
         &.content {
             color: green
         }
     }
    
  4. @at-root 跳出嵌套
    默認(rèn)@at-root只會跳出選擇器嵌套吊输,而不能跳出@media或@support堡妒,如果要跳出這兩種,則需使用@at-root(without: media),@at-root(without: support).這個語法的關(guān)鍵詞有四個:all(表示所有)锦担,rule(表示常規(guī)css),media(表示media)损晤,support(表示support)滞磺。默認(rèn)@at-root其實(shí)就是@at-root(without:rule)
     div {
         @at-root span {
             color: yellow
         }
         @media screen and (max-width: 600px) {
             @at-root (without: media) {
                 .container {
                     background: red;
                 }
             }
         }
         @media screen and (max-width: 600px) {
             @at-root (without: media rule) {
                 .container {
                     background: red;
                 }
             }
         }
     }
    
  5. @at-root與& 綜合使用
     .text-info {
         color: red;
         @at-root nav & {
             color: blue
         }
     }
    

繼承

  1. 簡單繼承
    .div {
        background: red
    }
    
    .span {
        @extend .div;
        color: blue
    }
    
  2. 多繼承
  • 多個@extend
    .dbody {
        font-size: 16px
    }
    
    .ddiv {
        background: red
    }
    
    .dspan {
        //@extend .dbody,.ddiv;
        @extend .dbody;
        @extend .ddiv;
        color: blue
    }
    
  1. 鏈型繼承
     .dbody {
         font-size: 16px
     }
    
     .ddiv {
         @extend .dbody;
         background: red
     }
    
     .dspan {
         @extend .ddiv;
         color: blue
     }
    
  2. 繼承的局限性
  • 包含選擇器异旧、相鄰兄弟選擇器 不能被繼承
  • 如果被繼承的元素是a,恰巧這個元素a又有hover狀態(tài)的形式佣谐,那么hover狀態(tài)也會被繼承
  1. 繼承交叉合并:避免使用肚吏,結(jié)果不可預(yù)期
     span a {
         font-size: 18px;
     }
    
     div .content {
         @extend a;
         color: red
     }
    
  2. 繼承的作用域
     .one {
         color: red
     }
    
     @media screen and (max-width: 600px) {
         <!-- .one {      //is wrong
             color: blue
         } -->
         .two {
             color: blue
         }
         .test {
             // @extend .one     //is wrong;
             @extend .two //is right 
         }
     }
    

占位選擇器 %

```css
%allsty {
    margin: 0;
    padding: 0
}

.one {
    @extend %allsty;
    color: red
}
```

數(shù)據(jù)類型

  1. 數(shù)字類型
    $n1: 1.2;
    $n2: 12;
    $n3: 12px;
    p {
        font-size: $n3
    }
    
  2. 字符串類型
    $s1: container;
    $s2: 'container';
    $s3: "container";
    p {
        font-size: $s1
    }
    
  3. boolean類型
    $bt: true;
    $bf: false;
    p {
        @if $bt {
            color: red
        }
    }
    
  4. null類型
    $isnull: null;
    p {
        @if $isnull==null {
            color: red
        }
    }
    
  5. color類型
    $c1: red;
    $c2: #fff;
    $c3: rgba(255, 255, 255, .5);
    p {
        color: $c2
    }
    
  6. map類型
    $mapcolor: (sblue: blue, sred: red, syellow: yellow);
    p {
        color: map-get($mapcolor, sblue)
    }
    
  7. list類型
    $list:(#b4d455, 42, "awesome");
    p {
        color: nth($list, 1)
    }
    

變量操作:== != < > <= => + - * / %

```css
$width1: 10px;
$width2: 15px;
p {
    width: $width2 - $width1
}

a:hover {
    cursor: e + -resize
}

a::before {
    content: "ab" + c
}

a::before {
    content: a + "bc"
}

$version: 3;
p::before {
    content: "sass version #{$version}"
}

p {
    font-size: (20px * 10);
    font-size: (20px / 10);
    font-size: (20px + 10px);
    font-size: (20px - 10);
}
```

mixin

  1. 簡單示例
    @mixin colors {
        color: red
    }
    
    div {
        @include colors()
    }
    
    @mixin inst($color:red, $size:16px) {
        color: $color;
        font-size: $size
    }
    
    div {
        @include inst(blue, 18px)
    }
    
    div {
        @include inst($size: 18px)
    }
    
    div {
        @include inst()
    }
    
  2. 多值參數(shù)
    @mixin paddings($pv...) {
        padding: $pv
    }
    
    div {
        @include paddings(5px, 6px, 7px, 8px)
    }
    
  3. 傳遞內(nèi)容
    @mixin style-for-oo($pv...) {
        div {
            @content
        }
    }
    
    @include style-for-oo {
        font-size: 18px
    }
    
    @include style-for-oo {
        color: red;
        font-weight: 200
    }
    

函數(shù)

  1. 內(nèi)置函數(shù)
    p {
        z-index: str-length($string: "abcdefg");
    }
    
    p {
        z-index: str-index($string: "abcdefg", $substring: "cde");
    }
    
  2. 自定義函數(shù)
    @function double($width) {
        @return $width * 2
    }
    
    p {
        width: double(10px)
    }
    

調(diào)試指令

  ```css
@debug 'this is debug';
@warn 'this is warn';
@error 'this is error'
```

控制指令和表達(dá)式

  1. if語句
    if( expression, value1, value2 )
    
    eg:
    div {
        color: if(1+1==2, red, blue)
    }
    
  2. @if語句
    @if expression {
    // CSS codes
    } @else if condition {
    // CSS codes
    } @else {
    // CSS codes
    }
    
    eg:
    $type: audi;
    p {
        @if $type==benz {
            color: red;
        }
        @else if $type==mahindra {
            color: blue;
        }
        @else if $type==audi {
            color: green;
        }
        @else {
            color: black;
        }
    }
    
  3. @for語句
    @for $var from <start> through <end>
    
    eg:
    @for $i from 1 through 4 {
        .p#{$i} { padding-left : $i * 10px; }
    }
    
    @for $var from <start> to <end>
    
    eg:
    @for $i from 1 to 4 {
        .p#{$i} { padding-left : $i * 10px; }
    }
    
  4. @each語句
    @each $var in <list or map>
    
    eg:
    @each $color in red, green, yellow, blue {
        .p_#{$color} {
            background-color: #{$color};
        }
    }
    
    
    @each $var1, $var2, $var3 ... in <list>
    
    eg:
    @each $color, $border in (aqua, dotted),(red, solid),(green, double){
        .#{$color} {
            background-color : $color;
            border: $border;
        }
    }
    
    
    @each $var1, $var2 in <map>
    
    eg:
    @each $header, $color in (h1: red, h2: green, h3: blue) {
        #{$header} {
            color: $color;
        }
    }
    
  5. 語句
    while(condition) {
    // CSS codes
    }
    
    eg:
    $i: 50;
    @while $i>0 {
        .paddding-#{$i} {
            padding-left: 1px * $i;
        }
        $i: $i - 10;
    }
    
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市台谍,隨后出現(xiàn)的幾起案子须喂,更是在濱河造成了極大的恐慌,老刑警劉巖趁蕊,帶你破解...
    沈念sama閱讀 211,348評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件坞生,死亡現(xiàn)場離奇詭異,居然都是意外死亡掷伙,警方通過查閱死者的電腦和手機(jī)是己,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,122評論 2 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來任柜,“玉大人卒废,你說我怎么就攤上這事≈娴兀” “怎么了摔认?”我有些...
    開封第一講書人閱讀 156,936評論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長宅粥。 經(jīng)常有香客問我参袱,道長,這世上最難降的妖魔是什么秽梅? 我笑而不...
    開封第一講書人閱讀 56,427評論 1 283
  • 正文 為了忘掉前任抹蚀,我火速辦了婚禮,結(jié)果婚禮上企垦,老公的妹妹穿的比我還像新娘环壤。我一直安慰自己,他們只是感情好钞诡,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,467評論 6 385
  • 文/花漫 我一把揭開白布郑现。 她就那樣靜靜地躺著湃崩,像睡著了一般。 火紅的嫁衣襯著肌膚如雪懂酱。 梳的紋絲不亂的頭發(fā)上竹习,一...
    開封第一講書人閱讀 49,785評論 1 290
  • 那天,我揣著相機(jī)與錄音列牺,去河邊找鬼整陌。 笑死,一個胖子當(dāng)著我的面吹牛瞎领,可吹牛的內(nèi)容都是我干的泌辫。 我是一名探鬼主播,決...
    沈念sama閱讀 38,931評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼九默,長吁一口氣:“原來是場噩夢啊……” “哼震放!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起驼修,我...
    開封第一講書人閱讀 37,696評論 0 266
  • 序言:老撾萬榮一對情侶失蹤殿遂,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后乙各,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體墨礁,經(jīng)...
    沈念sama閱讀 44,141評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,483評論 2 327
  • 正文 我和宋清朗相戀三年耳峦,在試婚紗的時候發(fā)現(xiàn)自己被綠了恩静。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,625評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡蹲坷,死狀恐怖驶乾,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情循签,我是刑警寧澤级乐,帶...
    沈念sama閱讀 34,291評論 4 329
  • 正文 年R本政府宣布,位于F島的核電站县匠,受9級特大地震影響唇牧,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜聚唐,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,892評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望腔召。 院中可真熱鬧杆查,春花似錦、人聲如沸臀蛛。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至客峭,卻和暖如春豫领,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背舔琅。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工等恐, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人备蚓。 一個月前我還...
    沈念sama閱讀 46,324評論 2 360
  • 正文 我出身青樓课蔬,卻偏偏與公主長得像,于是被迫代替她去往敵國和親郊尝。 傳聞我的和親對象是個殘疾皇子二跋,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,492評論 2 348

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

  • 什么是SASS SASS是一種CSS的開發(fā)工具,提供了許多便利的寫法流昏,大大節(jié)省了設(shè)計者的時間扎即,使得CSS的開發(fā),變...
    陳小陌丿閱讀 467評論 0 0
  • 安裝運(yùn)行 1.下載ruby并安裝 2.安裝之后打開命令行執(zhí)行g(shù)em命令况凉,檢查是否已經(jīng)安裝好 安裝完ruby之后谚鄙,在...
    wshining閱讀 711評論 0 1
  • SASS學(xué)習(xí)筆記 文件后綴名 sass有兩種后綴名文件:一種后綴名為sass,不使用大括號和分號茎刚;另一種是scss...
    EL_PSY_CONGROO閱讀 260評論 0 0
  • ? Sass是使用Ruby語言編寫的css預(yù)處理語言襟锐,誕生于2007年。Sass, LESS, stylus等...
    智明書閱讀 250評論 0 1
  • 前二天知道了上學(xué)期末和開學(xué)考的排名膛锭,期末年級90名粮坞,比期中下滑57名,這過山車滑得也太快了一點(diǎn)初狰。期初63名莫杈,又...
    上善若水2004閱讀 135評論 0 0