成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Sass 語(yǔ)法小結(jié)

lidashuang / 447人閱讀

摘要:本文主要對(duì)的基本語(yǔ)法進(jìn)行了小結(jié),方便日后快速查閱使用。另外,因?yàn)榈恼Z(yǔ)法完全兼容,所以可以把原始的文件改名為后綴,即可直接導(dǎo)入了。為了解決這個(gè)問(wèn)題,允許通過(guò)語(yǔ)法的形式指定每個(gè)參數(shù)的值。后記功能豐富強(qiáng)大,上面的語(yǔ)法小結(jié)只是其中的一小部分。

本文主要對(duì) Sass 的基本語(yǔ)法進(jìn)行了小結(jié),方便日后快速查閱使用。

一、變量($) 1. 變量標(biāo)識(shí)符

Sass 使用 $ 符號(hào)來(lái)標(biāo)識(shí)變量。

$highlight-color: #abcdef;
.selected {
     border: 1px $highlight-color solid;
}
2. 重復(fù)引用

在聲明變量時(shí),變量值也可以引用其它變量。

$highlight-color: #abcdef;
$highlight-border: 1px $highlight-color solid;
.selected {
     border: $highlight-border;
}
二、嵌套 1. 基本嵌套

在一個(gè)規(guī)則塊中,既可以像普通的 CSS 那樣包含屬性,又可以嵌套其它規(guī)則塊。

#content {
     background-color: #f5f5f5;
     aside { 
         background-color: #eee; 
     }
}
2. 父選擇器的標(biāo)識(shí)符 &

一是用來(lái)解決類似 :hover 這樣的偽類選擇器,二是可以再父選擇器之前添加選擇器。

article a {
     color: blue;
     &:hover {     
         color: red; 
     }
}

#content aside {
     color: red;
     .feed & {
         color: green;
     }
}
3. 群組選擇器
.container h1, 
.container h2, 
.container h3 {    // css 
    margin-bottom: .8em; 
}     

.container {       // sass
     h1, h2, h3 {margin-bottom: .8em}
}

子組合選擇器和同層組合選擇器:>、+~

article section {     // 選擇article下的所有section選擇器元素
    margin: 5px;
}

article > section {     // 選擇article下緊跟著的子元素section選擇器元素
    border: 1px solid #ccc;
}

header + p {             // 選擇與header元素同層的p元素
    font-size: 1.1em
}

article ~ article {     // 選擇所有跟article后的同層article元素
    border-top: 1px dashed #ccc
}

article {             // sass的寫(xiě)法,可以從選擇符前斷開(kāi)
     ~ article { 
         border-top: 1px dashed #ccc; 
     }
     > section { 
         background: #eee; 
     }
     dl > {
          dt { 
              color: #333; 
          }
          dd { 
              color: #555; 
          }
     }
     nav + & { 
         margin-top: 0; 
     }
}
4. 嵌套屬性

把屬性名從中劃線 - 的地方斷開(kāi),在根屬性后添加一個(gè)冒號(hào) :,緊跟一個(gè) {} 塊,把子屬性部分寫(xiě)在這個(gè) {} 塊中。

nav {     // sass
     border: {
          style: solid;
          width: 1px;
          color: #ccc;
     }
}

nav {     // css
     border-style: solid;
     border-width: 1px;
     border-color: #ccc;
}

nav {     // sass
     border: 1px solid #ccc {
          left: 0px;
          right: 0px;
     }
}

nav {     // css
     border: 1px solid #ccc;
     border-left: 0px;
     border-right: 0px;
}
三、導(dǎo)入 1. @import規(guī)則

CSS 有一個(gè)特別不常用的特性,即 @import 規(guī)則,它允許在一個(gè) CSS 文件中導(dǎo)入其它 CSS 文件。然而,后果是只有執(zhí)行到 @import 語(yǔ)句時(shí),瀏覽器才會(huì)去下載其它 CSS 文件,這導(dǎo)致頁(yè)面加載起來(lái)特別慢。

Sass 也有一個(gè) @import 規(guī)則,但不同的是,Sass 的 @import 規(guī)則在生成 CSS 文件時(shí)就把相關(guān)文件導(dǎo)入進(jìn)來(lái)。這意味著所有相關(guān)的樣式被歸納到了同一個(gè) CSS 文件中,而無(wú)需發(fā)起額外的下載請(qǐng)求。

所有在被導(dǎo)入文件中定義的變量和混合器均可在導(dǎo)入文件中使用。

使用 Sass 的 @import 規(guī)則并不需要指明被導(dǎo)入文件的全名,你可以省略 .sass、.scss文件后綴。

@import "colors";    // colors.scss
@import "mixins";    // mixins.scss
@import "grid";      // grid.scss
2. 使用局部文件

有一些專為 @import 命令而編寫(xiě)的 Sass 文件,這些文件并不會(huì)編譯成對(duì)應(yīng)的獨(dú)立 CSS 文件,這樣的 Sass 文件稱為 局部文件。

局部文件的文件名以下劃線開(kāi)頭,如 _night-sky.scss。

當(dāng)你想用 @import 導(dǎo)入局部文件時(shí),可省略文件名前面的下劃線 -,如:

@import "themes/night-sky";    // themes/_night-sky.scss
3. 默認(rèn)變量值

如果用戶在導(dǎo)入你的局部文件之前聲明了變量,那么你的局部文件中的默認(rèn)變量值就無(wú)效,否則就取默認(rèn)值。

$fancybox-width: 400px !default;

.fancybox {
     width: $fancybox-width;
}
4. 嵌套導(dǎo)入

例如,有一個(gè)名為 _blue-theme.scss的局部文件,內(nèi)容為:

aside {
     background: blue;
     color: white;
}

然后把它導(dǎo)入到一個(gè)CSS規(guī)則內(nèi),如下所示:

.blue-theme {
    @import "blue-theme";
}

生成的結(jié)果跟你直接在 .blue-theme 選擇器內(nèi)寫(xiě)_blue-theme.scss文件的內(nèi)容完全一樣:

.blue-theme {
     aside {
          background: blue;
          color: #fff;
     }
}
5. 原生的 CSS 導(dǎo)入

由于 Sass 兼容原生的 CSS,所以它也只支持原生的 CSS @import,下列三種情況都生成原生的 CSS import

被導(dǎo)入的文件以 .css 結(jié)尾;

被導(dǎo)入文件的名字是一個(gè) URL 地址,比如:比如http://sass-lang.com/styleshe...);

被導(dǎo)入文件的名字是 CSS 的 url() 值。

另外,因?yàn)?Sass 的語(yǔ)法完全兼容 CSS,所以可以把原始的 CSS 文件改名為 .scss 后綴,即可直接導(dǎo)入了。

四、注釋 1. 靜默注釋
body {
     color: #333; // 這種注釋內(nèi)容不會(huì)出現(xiàn)在生成的css文件中(靜默注釋)
     padding: 0;  /* 這種注釋內(nèi)容會(huì)出現(xiàn)在生成的css文件中 */
}
五、混合器 1. 定義與使用

如果你的整個(gè)網(wǎng)站中有幾處小小的樣式重復(fù)(例如一樣的顏色和字體),那么使用變量來(lái)統(tǒng)一處理這種情況是非常不錯(cuò)的選擇(小顆粒度)。但是當(dāng)你的樣式變得越來(lái)越復(fù)雜,你需要大段大段的重用樣式的代碼,那么獨(dú)立的變量就沒(méi)有辦法應(yīng)付這種情況,這時(shí)候你可以通過(guò) Sass 的混合器(@mixin)來(lái)實(shí)現(xiàn)大段樣式的重用(大顆粒度)。

混合器使用 @mixin 標(biāo)識(shí)符定義,然后通過(guò) @include 來(lái)使用這個(gè)混合器。

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

.notice {     // @include 調(diào)用
     background-color: green;
     border: 2px solid #00aa00;
     @include rounded-corners;
}

.notice {     // 最后生成
     background-color: green;
     border: 2px solid #00aa00;
     -moz-border-radius: 5px;
     -webkit-border-radius: 5px;
     border-radius: 5px;
}
2. 使用場(chǎng)景

判斷一組屬性是否應(yīng)該組合成一個(gè)混合器,一條經(jīng)驗(yàn)法則就是你能否為這個(gè)混合器想出一個(gè)好的名字。如果你能找到一個(gè)很好的名字來(lái)描述這些屬性修飾的樣式,比如 rounded-cornersfancy-font 或者 no-bullets,那么往往能夠構(gòu)造一個(gè)合適的混合器。如果你找不到,這時(shí)候構(gòu)造一個(gè)混合器可能并不合適(避免濫用)。

3. 混合器中的 CSS 規(guī)則

混合器不僅可以包含屬性,還可以包含 CSS 規(guī)則,包含選擇器和選擇器中的屬性。

@mixin no-bullets {     // @mixin 定義
     list-style: none;
     li {
          list-style-image: none;
          list-style-type: none;
          margin-left: 0px;
     }
}

ul.plain {    // @include 調(diào)用
     color: #444;
     @include no-bullets;
}

ul.plain {     // 最終生成
     color: #444;
     list-style: none;
}
ul.plain li {
     list-style-image: none;
     list-style-type: none;
     margin-left: 0px;
}
4. 給混合器傳參

混合器并不一定總得生成相同的樣式,可以通過(guò)在調(diào)用 @include 時(shí)傳參來(lái)定制混合器生成的精確樣式(跟 JavaScript 的 function 很像)。

@mixin link-colors($normal, $hover, $visited) { // @mixin 定義
     color: $normal;
     &:hover { 
         color: $hover; 
     }
     &:visited { 
         color: $visited; 
     }
}

a {    // @include 調(diào)用
    @include link-colors {blue, red, green};
}

a { color:blue; }    // 最終生成
a:hover { color:red; }
a:visited {color:green; }

當(dāng)你使用 @include 調(diào)用混合器時(shí),有時(shí)候可能會(huì)很難區(qū)分每個(gè)參數(shù)是什么意思或者參數(shù)之間是一個(gè)怎么的順序。為了解決這個(gè)問(wèn)題,Sass 允許通過(guò)語(yǔ)法 $name: value 的形式指定每個(gè)參數(shù)的值。這種形式的傳參,參數(shù)順序什么的就不必在乎了,只需要沒(méi)有漏掉參數(shù)即可。

a {    //  傳參
     @include link-colors(
          $normal: blue,
          $visited: green,
          $hover: red
     );
}

為了在 @include 調(diào)用混合器時(shí)不必傳入所有的參數(shù),我們可以給參數(shù)指定一個(gè)默認(rèn)值。參數(shù)默認(rèn)值使用 $name: default-value 的聲明形式。默認(rèn)值可以是任何有效的 CSS 屬性值,甚至是其它參數(shù)的引用。

@mixin link-colors(     // 使用默認(rèn)參數(shù)值
     $normal,
     $hover: $normal,
     $visited: $normal
) {
     color: $normal;
     &:hover { color: $hover; }
     &:visited { color: $visited; }
}
六、繼承 1. 定義和使用

sass中,選擇器繼承可以讓選擇器 繼承另一個(gè)選擇器的所有樣式,并聯(lián)合聲明。使用選擇器的繼承,要使用關(guān)鍵詞 @extend,后面緊跟需要繼承的選擇器。

h1{    // sass
  border: 4px solid #ff9aa9;
}
.speaker{
  @extend h1;
  border-width: 2px;
}

h1,.speaker{    // css
  border: 4px solid #ff9aa9;
}
.speaker{
  border-width: 2px;
}
后記

Sass 功能豐富、強(qiáng)大,上面的語(yǔ)法小結(jié)只是其中的一小部分。任何你想提高 CSS 代碼編寫(xiě)效率的方法仿佛都能在 Sass 中找到。掌握 Sass 的使用應(yīng)該成為現(xiàn)代前端開(kāi)發(fā)的一項(xiàng)必備技能,尤其是那些大型的、復(fù)雜的 Web 項(xiàng)目。

參考資料

Sass 與 Compass 實(shí)戰(zhàn)

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/116461.html

相關(guān)文章

  • sass筆記-2|Sass基礎(chǔ)語(yǔ)法之讓樣式表更具條理性和可讀性

    摘要:這個(gè)時(shí)候小明如果僅僅引入不想改,那么就是這個(gè)值,如果他想改,就可以在任何一處重新聲明這個(gè)變量,那么就會(huì)變成小明的值。 這一篇主要詳述保持sass條理性和可讀性的3個(gè)最基本方法——嵌套、導(dǎo)入和注釋。 零. 變量 變量本身的作用是為了保持屬性值的可維護(hù)性,把所有需要維護(hù)的屬性值放在同一個(gè)地方,快速更改,處處生效,可謂售后無(wú)憂。 1.變量聲明 變量用$符號(hào)開(kāi)頭進(jìn)行聲明,任何可以用作CSS屬性...

    CloudDeveloper 評(píng)論0 收藏0
  • sass筆記-3|Sass基礎(chǔ)語(yǔ)法之樣式復(fù)用和保持簡(jiǎn)潔

    摘要:區(qū)別在于,類是在中運(yùn)用的,混合器是在樣式表中使用的。基本用法選擇器繼承,用去繼承一個(gè)選擇器定義的所有樣式。繼承背后的基本實(shí)現(xiàn)思路背后最基本的想法是,如果繼承了,那么樣式表中的任何一處選擇器都會(huì)用這一選擇器組進(jìn)行替換和打開(kāi)。 上一篇詳述了Sass如何嵌套、導(dǎo)入和注釋這3個(gè)基本方式來(lái)保持條理性和可讀性,這一篇更進(jìn)一步地闡述sass保持樣式復(fù)用和簡(jiǎn)潔的方式——混合器和選擇器繼承——這兩種方式...

    SmallBoyO 評(píng)論0 收藏0
  • sass筆記-4|像寫(xiě)腳本一樣寫(xiě)Sass,把能交給Sass辦的都交給它

    摘要:布爾值布爾值主要用于的分支結(jié)構(gòu)中判斷使用,布爾值的操作符有和,就是與或非。此外比較操作符只能作用于數(shù)字,但是可作用于所有類型,這些操作符返回布爾值。 Sass筆記關(guān)于sass的基礎(chǔ)部分已經(jīng)寫(xiě)完,這一篇介紹Sass的高級(jí)特性——腳本特性。Sass能做很多事讓樣式表更智能,我們先會(huì)看到Sass眼中的數(shù)據(jù)類型,在這些數(shù)據(jù)類型上會(huì)有可進(jìn)行的操作,此外,Sass中的內(nèi)置函數(shù)(尤其是顏色函數(shù))能幫...

    AnthonyHan 評(píng)論0 收藏0
  • 面試小結(jié)(四)

    摘要:對(duì)于像網(wǎng)易這種大公司,我是很向往的。希望以后自己的技術(shù)精進(jìn)了,能進(jìn)這樣的大公司。也希望路過(guò)的人,通過(guò)自己的努力,不負(fù)好時(shí)光今天發(fā)現(xiàn),原來(lái)這篇文章沒(méi)有發(fā)出去,今天我就再發(fā)一遍咯 1、場(chǎng)景開(kāi)發(fā):移動(dòng)端飄雪場(chǎng)景實(shí)現(xiàn);2、rem布局的原理;3、Rem布局和vh,vw布局那種更火;4、Position定位的幾個(gè)屬性和用法;5、使用rem布局的問(wèn)題;6、使用rem布局,移動(dòng)和pc是否可以用同一套樣...

    cuieney 評(píng)論0 收藏0
  • 面試小結(jié)(四)

    摘要:對(duì)于像網(wǎng)易這種大公司,我是很向往的。希望以后自己的技術(shù)精進(jìn)了,能進(jìn)這樣的大公司。也希望路過(guò)的人,通過(guò)自己的努力,不負(fù)好時(shí)光今天發(fā)現(xiàn),原來(lái)這篇文章沒(méi)有發(fā)出去,今天我就再發(fā)一遍咯 1、場(chǎng)景開(kāi)發(fā):移動(dòng)端飄雪場(chǎng)景實(shí)現(xiàn);2、rem布局的原理;3、Rem布局和vh,vw布局那種更火;4、Position定位的幾個(gè)屬性和用法;5、使用rem布局的問(wèn)題;6、使用rem布局,移動(dòng)和pc是否可以用同一套樣...

    singerye 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<