Sass 變量的聲明與使用

本節咱們學習 Sass 中的變量,那麼什麼是變量呢? Sass 中的變量能夠用來存儲一些信息,而且重複使用。變量能夠存儲的信息包括字符串、數字、布爾值、顏色值等等。css

聲明變量

Sass 中聲明變量須要用到 $ 符號,格式爲:學習

$變量名: 變量值;
示例:

例以下面咱們定義一個變量,並給這個變量賦了一個顏色值:code

$color:red;
.xkd{
    color: $color;
    a{
        background-color: $color;
    }
}

執行編譯命令,編譯後的 CSS 代碼以下所示:作用域

.xkd {
  color: red;
}
.xkd a {
  background-color: red;
}

定義好變量後,在須要使用到 red 顏色時,就能夠直接使用變量名來代替這個顏色值。固然,如今這樣看咱們仍是不太清楚爲何要使用變量,沒有看出變量的優點。可是若是咱們在一個大型項目中,定義變量會頗有用,例如咱們可能會在多個地方使用同一個顏色值,若是後期須要對這個顏色值進行修改,那麼一個一個去找會很麻煩,而若是定義了變量,就只須要修改變量的值便可。字符串

默認變量

Sass 的默認變量須要在值的後面加上 !default 。默認變量通常用來設置默認值,也就是說當某個變量定義了一個默認值,可是又出現另一個值時,不管誰先被定義,默認值都會被覆蓋。scss

示例:

看下面這段代碼:編譯

$fsize: 14px;
.xkd{
    $fsize: 12px!default;
    font-size: $fsize;
}

編譯成 CSS 代碼後:class

.xkd {
  font-size: 14px;
}

上述代碼中,咱們先定義了一個全局變量 $fsize 並賦值爲 14px ,而後在 .xkd 選擇器中給 $fsize 變量賦了一個 12px 的值,按理來講會優先使用 12px,可是由於在 12px 後面加了一個 !default,變成了一個默認值,最後輸出的 CSS 代碼中,使用的是 14px變量

變量的做用域

Sass 中支持兩種類型的變量,即局部變量和全局變量。默認狀況下定義在選擇器以外的爲全局變量,全局變量的做用域爲全局,能夠被全部的選擇器訪問。定義在選擇器內的爲局部變量,局部變量的做用域只能在當前層級上有效果。下面咱們經過一個例子來看一下局部變量和全局變量的使用。引用

示例:
$color: #ccc;  // 全局變量
.one{
    $color: #eee;  // 局部變量
    background-color: $color;
}
.two{
    background-color: $color;
}

編譯成 CSS 代碼:

.one {
  background-color: #eee;
}
.two {
  background-color: #ccc;
}

上述代碼中,能夠看到咱們定義了一個全局變量 $color,而後又在 .one 中定義了一個局部變量 $color。此時.one.two 同時引用 $color ,編譯成 CSS 代碼後,.one 中使用的是局部變量的值,而 .two 中使用的是全局變量的值。

能夠看出,局部變量的做用域就只在聲明這個變量的當前代碼塊中,而全局變量的做用域則在全局。當使用了某個變量時,首先會在當前代碼塊中查找,若是找不到則向上一層代碼塊中查找,一直到找到爲止。

!global 關鍵字

咱們能夠經過關鍵字 !global 來設置全局變量,也就是說咱們只要在一個變量後面使用這個關鍵字,那麼這個變量就爲全局變量。

示例:

咱們來看一個例子:

.one{
    $num: 14px !global;  
    font-size: $num;
}
.two{
    font-size: $num;
}

編譯成 CSS 代碼:

.one {
  font-size: 14px;
}

.two {
  font-size: 14px;
}

在上述代碼中,本來在.two 選擇器中是不能訪問 .one 選擇器中的變量的,可是由於變量 $num 使用了 !global 關鍵字,因此 $num 變成了一個全局變量,這樣就能夠 .two 選擇器訪問啦。

相關文章
相關標籤/搜索