2018.2.26-2018.3.4sass學(xué)習(xí)

一.準(zhǔn)備工作:

1.安裝(mac):
gem install sass;
2.sass文件的預(yù)編譯:


屏幕快照 2018-03-05 上午12.42.16.png

二.變量

1.變量可以在css規(guī)則塊定義之外存在。當(dāng)變量定義在css規(guī)則塊內(nèi),那么該變量只能在此規(guī)則塊內(nèi)使用。

$border-color: green;

.box {
  $font-size: 20px;
  font-size: $font-size;
  height: 300px;
  width: 300px;
  border: 1px solid $border-color;

}

2.將局部變量轉(zhuǎn)為全局變量:!global

.scss文件:
.scroll-list {
  $list-style: none !global;
  li {
    list-style: $list-style;
  }
}
.project-list {
  list-style: $list-style;
}
編譯后.css文件:
.scroll-list li {
  list-style: none; }

.project-list {
  list-style: none; }

三.sass文件的導(dǎo)入

1.sass的@import規(guī)則在生成css文件時(shí)就把相關(guān)文件導(dǎo)入進(jìn)來。這意味著所有相關(guān)的樣式被歸納到了同一個(gè)css文件中,而無需發(fā)起額外的下載請(qǐng)求。另外,所有在被導(dǎo)入文件中定義的變量和混合器均可在導(dǎo)入文件中使用。
2.使用sass的@import規(guī)則并不需要指明被導(dǎo)入文件的全名。例如:@import"sidebar";可以隨意修改你或別人寫的被導(dǎo)入的sass樣式文件語法,在sass和scss語法之間隨意切換。
3.sass局部文件的導(dǎo)入
約定sass局部文件的文件名以下劃線開頭。例如: _night-sky.scss
約定的目的: sass就不會(huì)在編譯時(shí)單獨(dú)編譯這個(gè)文件輸出css。
導(dǎo)入方式:

import 'night-sky';

4.默認(rèn)變量值:
作用:局部文件可以被多個(gè)不同的文件引用,但有時(shí)需要對(duì)導(dǎo)入的樣式做一些修改,所以需要默認(rèn)變量值。

$box-width: 30px !default;
.box {
   width: $box-width;
}

當(dāng)被導(dǎo)入的sass文件中已經(jīng)對(duì)該變量賦了值,則導(dǎo)入的文件中的值無效,否則為默認(rèn)值。
5.嵌套導(dǎo)入
sass允許@import命令寫在css規(guī)則內(nèi):

_2.scss:

.face {
  width: 20px;
  height: 40px;
}
1.scss: 

.mouse {
  @import "import-sass/2";
}

結(jié)果:

.mouse .face {
  width: 20px;
  height: 40px;
 }

6.原生的css文件的導(dǎo)入:
三種情況下會(huì)生成原生的CSS@import,但會(huì)造成瀏覽器解析css時(shí)的額外下載:
(1)被導(dǎo)入文件的名字以.css結(jié)尾;
(2)被導(dǎo)入文件的名字是一個(gè)URL地址(比如http://www.sass.hk/css/css.css),由此可用谷歌字體API提供的相應(yīng)服務(wù);
(3)被導(dǎo)入文件的名字是CSS的url()值。
在sass文件中導(dǎo)入css文件的方法:
把原始的css文件改名為.scss后綴,即可直接導(dǎo)入了。

四.靜默注釋:

1.作用:靜默注釋在生出的css文件中會(huì)被抹去.
2.樣式:

.finger {
  font-size: 12px; // 字體大小
}

五.混合器:

sass的混合器可以實(shí)現(xiàn)大段樣式的重用?;旌掀魇褂聾mixin標(biāo)識(shí)符定義。例子:

@mixin rounded-corners {
  -moz-border-radius: 5px;
  -webkit-border-radius: 5px;
  border-radius: 5px;
}

1.何時(shí)使用混合器:
對(duì)一大段代碼能起一個(gè)代表性的名字
2.混合器中的css規(guī)則:
混合器可以使用嵌套:

@mixin radius {
  border-radius: 10px;
  div.box-image {
    border-color: red;
    border-width: 3px;
  }
}
.clothes {
  color: #000;
  @include radius;
}

結(jié)果:

.clothes {
  color: #000;
  border-radius: 10px;
}
  .clothes div.box-image {
    border-color: red;
    border-width: 3px; 
}

3.給混合器傳入?yún)?shù):

@mixin box-color ($normal,$hover,$visited) {
  background-color: $normal;
  &:hover {
    background-color:$hover;
  }
  &:visited{
    background-color: $visited;
  }
}

.food {
  @include box-color(red,yellow,green)
}

六.使用選擇器繼承

1.選擇器繼承:

.aside {
  border: 1px solid red;
  background-color: yellow;
}
.aside div{
  color: #ccc;
}
.aside li {
  font-size: 20px;
}
.footer {
  @extend .aside;
  border-width: 2px;
}

注意:任何與.aside 相關(guān)的樣式都會(huì)被繼承。
結(jié)果是:

.aside, .footer {
  border: 1px solid red;
  background-color: yellow; }

.aside div, .footer div {
  color: #ccc; }

.aside li, .footer li {
  font-size: 20px; }

.footer {
  border-width: 2px; }

六.SassScript中的數(shù)據(jù)類型

1.SassScript 可作用于任何屬性,允許屬性使用變量、算數(shù)運(yùn)算等額外功能。
2.數(shù)據(jù)類型

數(shù)字: 1, 2, 13, 10px
字符串: 有引號(hào)字符串與無引號(hào)字符串,"foo", 'bar', baz
顏色: blue, #04a3f9, rgba(255,0,0,0.5)
布爾型: true, false
空值: null
數(shù)組 (list): 用空格或逗號(hào)作分隔符,1.5em 1em 0 2em, Helvetica, Arial, sans-serif
maps: 相當(dāng)于 JavaScript 的 object,(key1: value1, key2: value2)

3.只有當(dāng)插值語句傳入有引號(hào)的字符串,才會(huì)被編譯為無引號(hào)字符串例子:

@mixin font-style($selector){
  .text-title #{$selector} {
    font-style: italic;
  }
}
.text {
  @include font-style(".first-line");
}
編譯結(jié)果:
.text .text-title .first-line {
  font-style: italic; }

4.三處會(huì)將‘/’作為運(yùn)算符的情況:

  • 如果值,或值的一部分,是變量或者函數(shù)的返回值
  • 如果值被圓括號(hào)包裹
  • 如果值是算數(shù)表達(dá)式的一部分
/*除法運(yùn)算*/
.box-img {
  $width: 20px;
  width: $width/2;
  height: (500px/2);
  margin-left: 5px + 18px/2;
}
結(jié)果:
.box-img {
  width: 10px;
  height: 250px;
  margin-left: 14px; }

5.顏色運(yùn)算:

.box-bgc {
  background-color: #111 + #222;
  color: (#888/2);
  border-color: rgba(100,100,100,0.8) + rgba(50,50,50,0.8); 
// 其中透明度是不能計(jì)算的,必須相等
}

結(jié)果:
.box-bgc {
  background-color: #333333;
  color: #444444;
  border-color: rgba(150, 150, 150, 0.8); }
透明度運(yùn)算:

.list-bgc {
  $color: rgba(100,100,100,0.3);
  color: opacify($color,0.5);  //加法
  background-color: transparentize($color,0.1); // 減法
}

結(jié)果:
.list-bgc {
  color: rgba(100, 100, 100, 0.8);
  background-color: rgba(100, 100, 100, 0.2); }

6.有無引號(hào)字符串順序的區(qū)別:

.symbol {
  font-family: "Microsoft " + YaHei;
  border-style: i + 'talic';
}

結(jié)果:
.symbol {
  font-family: "Microsoft YaHei";
  border-style: italic; }

7.字符串運(yùn)算之 +:

連接字符串:
.mouse {
  cursor: p + ointer;
}
結(jié)果:
.mouse {
  cursor: pointer; }

8.插值語句 #{}:

$name: color;
$attr: border;
$font-size: 22px;
$line-height: 11px;
.img-#{$name} {
  #{$attr}-color: red;
  font: #{$font-size}/#{$line-height}; // 使用 #{} 可以避免 Sass 運(yùn)行運(yùn)算表達(dá)式,直接編譯 CSS。
}

結(jié)果:
.img-color {
  border-color: red;
  font: 22px/11px; }

七.控制指令:

1.if

p {
  @if 1 + 1 == 2 {
    color: red;
  }
  @if 2+ 3 > 5 {
    font-size: 12px;
  }
  @if null {
    border: 1px solid #ccc;
  }
}

/*if語句*/

$type: opacity;

li {
  @if $type == red {
    color: #000;
  } @else if($type == yellow) {
    color: red;

  } @else if($type == opacity) {
    color: green;
  }
}
結(jié)果:
p {
  color: red; }

/*if語句*/
li {
  color: green; }

2.for語句:

@for $i from 1 through 3 {
  icon-#{$i} {
    width: 20px * $i;
  }
}
結(jié)果:
/*for語句*/
icon-1 {
  width: 20px; }

icon-2 {
  width: 40px; }

icon-3 {
  width: 60px; }
@for $i from 1 to 3 {
  fly-#{$i} {
    height: 30px * 1;
  }
}

//結(jié)果:
fly-1 {
  height: 30px; }

fly-2 {
  height: 30px; }

3.each語句:


@each $var in dog,cat,sheep {
  .box-#{$var} {
    background-color: red;
  }
}

@each $key,$value in (header: red,body: yellow,foot: blue) {
  .fix-#{$key} {
    color: $value;
  }
}

@each $name,$color,$url in (asia,yellow,China),(africa,black,agla),(oceania,white,austrilia) {
  .earth-#{$name} {
    color: $color;
    background: url(image/#{$url}.jpg);
  }
}
//結(jié)果:
.box-dog {
  background-color: red; }
.box-cat {
  background-color: red; }
.box-sheep {
  background-color: red; }

.fix-header {
  color: red; }
.fix-body {
  color: yellow; }
.fix-foot {
  color: blue; }

.earth-asia {
  color: yellow;
  background: url(image/China.jpg); }
.earth-africa {
  color: black;
  background: url(image/agla.jpg); }
.earth-oceania {
  color: white;
  background: url(image/austrilia.jpg); }

4.while語句:

$while-val: 6;
@while $while-val > 2 {
  .chart-#{$while-val} {
    width: 20px * $while-val;
  }
  $while-val: $while-val - 1;
}

// 結(jié)果:
.chart-6 {
  width: 120px; }

.chart-5 {
  width: 100px; }

.chart-4 {
  width: 80px; }

.chart-3 {

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容