第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

Sass 變量

1. 前言

Sass 為 CSS 引入了變量這一功能,在實際項目中使用最普遍的除了 Sass 嵌套 就是 Sass 變量了,你可以把 CSS 的某個屬性值定義為變量,然后在項目中任何需要它的地方來使用它。本節(jié)主要講解 Sass 變量的主要語法:變量的聲明、引用、作用域等,同時還會講解在實際項目中一般是如何來維護 Sass 變量的。

2. 什么是 Sass 變量 ?

我們在 Sass 簡介中提到 Sass是 CSS的擴展語言,變量是 CSS的擴展功能。
舉個例子,假如我們項目中很多地方要設(shè)置一個字體顏色為紅色,那么我們完全可以把這個顏色抽出來作為一個變量,然后在需要設(shè)置字體顏色的地方引用這個變量。這樣有一個好處就是,假如產(chǎn)品大大說要修改所有字體顏色的時候,我們就不需要每處都去修改了,直接更改變量的值就 OK 了,我們用 Sass 代碼來直觀的感受下:

$variable: red;

.title {
  color: $variable;
}
h1 {
  color: $variable;
}

可以看到上面的代碼,我們定義了 $variable 這個變量,然后在多個元素的樣式中使用它,那么變量的值都可以是什么呢?這個一定要記住,變量的值可以是:

  • 字符串
  • 數(shù)字
  • 顏色值
  • 布爾值
  • 列表
  • Null 值

下面我們將詳細的講解 Sass 變量的語法。

3. 語法詳情

我們首先看下這段使用 Sass 變量的代碼編譯為 CSS 是什么樣的:

$variable: red;

.title {
  color: $variable;
}
h1 {
  color: $variable;
}

編譯為 CSS 的代碼是:

.title {
  color: red;
}

h1 {
  color: red;
}

下面我將從變量的聲明開始,逐一講解 Sass 變量的語法。

3.1 變量的聲明

如果你熟悉 javascript 的話,你應(yīng)該更好理解什么是變量,那么在 Sass 中也一樣,我們都需要對變量進行聲明!Sass 的變量聲明 和 CSS 屬性聲明很像,Sass 變量以 $ 開始,例如我們聲明一個用于字體顏色的變量:$font-color: #ffffff; 我們聲明的變量是 $font-color ,它的值是 #ffffff (顏色值)。

要知道,任何 CSS 屬性的賦值,都可以用于 Sass 變量的值,比如在 CSS 中定義 border 屬性的值為 1px solid #000000 , 那么 1px solid #000000 這個值也可以用于 Sass 變量的值,下面舉幾個例子直觀地看下:

$font-family: "YaHei"、"Myriad Pro"; // 字體的屬性值
$color: red; // 顏色的屬性值
$width: 20px; // 寬度的屬性值
$border: 1px solid #000000; // border的屬性值
$use-flex-grow: 1; // flex-grow的屬性值

從上面的代碼可以看出,任何 CSS 的屬性值都可以作為 Sass 變量的值,值得一提的是,這段代碼只是對變量進行了聲明而已,并沒有使用變量,只有你使用這個變量的時候它才會生效!所以接下來我們開始講解變量的引用。

小知識:舊版本的 Sass 使用 ! 來聲明變量,比如 !variable ; 要知道在 CSS 中有一種提升優(yōu)先級的方式是 !important ,可能 Sass 官方團隊認(rèn)為使用 ! 可能會導(dǎo)致和 CSS 語法的沖突,所以后來改為了使用 $ 來聲明變量。

3.1.1 變量的命名

  • 變量盡量使用語義化的方式來進行命名,比如整個項目的主體顏色,我們定義變量名為 $theme-color,頁面中的主要邊框顏色,我們定義為 $main-border-color 等等,這種語義化的命名更方便維護同時也更利于其他開發(fā)人員理解。
  • 變量名是使用中劃線 “-” 還是下劃線 “_” 分隔呢?這個就看你自己的習(xí)慣了,沒有什么硬性要求,一般我是使用中劃線來分隔的,這種方式也比較普遍。在 Sass 中使用中劃線和下劃線這兩種方式是兼容的,也就是說你用中劃線聲明的變量,也可以使用下劃線去引用,比如我定義了變量 $theme-color ,我在引用的時候也可以寫成 $theme_color 。
  • 還有一些命名規(guī)范可能是每個公司或者每個項目自己制定的,這個就要根據(jù)實際情況來了。

3.2 變量的引用

上面我們說了怎么去聲明一個 Sass 變量,下面我們講如何去引用它。只要是可以寫 CSS 屬性值的地方,就可以使用變量,所以說,你幾乎可以在任何地方引用變量,編譯后,變量會被替換為變量值,如果說你需要改變這個值,那么你只需要在聲明變量的地方改變這個變量值,那么其余引用它的地方就都會改變。我們寫一段代碼來感受下:

$main-bg-color: blue;
$main-border: 1px solid #cccccc;
$main-font-size: 18px;
$error-text-color: red;
$body-color: $main-bg-color;
body {
  background-color:$body-color;
}
.content {
  font-size:$main-font-size;
  background-color:$main-bg-color;
  border:$main-border;
}
.error {
  font-size:$main-font-size;
  color:$error-text-color;
}

上面我們定義了幾個變量字體顏色、邊框、字體大小等,然后在 .content 和 .error 的樣式表中引用它們,值得注意的是 $body-color 這個變量,在聲明變量時,變量的值也可以引用其他變量,是不是很方便很靈活,上面的 Sass 代碼最終將會編譯為如下的 CSS 代碼:

body {
  background-color: blue;
}

.content {
  font-size: 18px;
  background-color: blue;
  border: 1px solid #cccccc;
}

.error {
  font-size: 18px;
  color: red;
}

3.3 變量的作用域

從 Sass 3.4.x 版本開始,Sass 中開始有作用域的概念。和 javascript 中的變量類似,Sass 的變量也是有作用域這個概念的,也有全局作用域和局部作用域之分,我們舉個例子來看下:

$main-color: red;
h1 {
  $main-color: green; // 局部變量
  color:$main-color;
}
h2 {
  color:$main-color;
}

我們看到在第一行代碼我們聲明了一個全局變量 $main-color ,在 h1 的樣式中我們又聲明了一個和全局變量同名的 $main-color ,在 h1 樣式中聲明的這個 $main-color 就是局部變量,在 h1 的樣式中會引用局部變量而不是全局變量,最終轉(zhuǎn)換為 CSS 的代碼如下:

h1 {
  color: green;
}

h2 {
  color: red;
}

3.3.1 !global 標(biāo)識符

上面我們講解了局部變量和全局變量,那么如果我想用局部變量去改變?nèi)肿兞磕兀?Sass 允許使用 !global 標(biāo)識符來設(shè)置局部變量為全局,以此來改變局部變量的作用范圍,我們還是用上面的代碼,來改變局部變量的作用域為全局:

$main-color: red;
h1 {
  $main-color: green!global;
  color:$main-color;
}
h2 {
  color:$main-color;
}

我們來看下,上面這段轉(zhuǎn)換為 CSS 是這樣的:

h1 {
  color: green;
}

h2 {
  color: green;
}

可以看到我們覆蓋掉了全局變量 $main-color 的值 red ,不過請你記住,在大型項目中盡量不要使用這種方式去改變?nèi)肿兞浚@可能會影響到其他頁面的樣式改變!

3.3.2 !default標(biāo)識符

一般來說我們反復(fù)的聲明一個重名變量,那么最后一個聲明的變量值會覆蓋上面所有的,比如像下面這樣:

$main-color: red;
$main-color: green;
h1 {
  color:$main-color;
}

那么最后編譯的時候會使用最后一次聲明的變量值,也就是 green ,我們看下編譯后的代碼:

h1 {
  color: green;
}

這樣就有一個問題,在實際的項目開發(fā)中,假如需要你來寫一段公共的 Sass 代碼給其他開發(fā)者使用,那么如果你的代碼中聲明了 $main-color 這個變量,那么其他開發(fā)者在自己頁面也聲明了 $main-color 這個變量,并且他是在導(dǎo)入你的這段代碼之前聲明的,那么他的就會被覆蓋掉,這是不行的!

所以這里你需要使用 !default 標(biāo)識符,顧名思義,就是默認(rèn)值,如果這個變量被聲明并賦值了,那么就使用聲明的值,否則就使用默認(rèn)值。我們還是用上面的例子來看下:

$main-color: red; // 假如這個是其他開發(fā)者自己聲明的
$main-color: green!default; // 假如這個是你的代碼片段聲明的
h1 {
  color:$main-color;
}

那么在最后編譯的時候會使用 red 這個變量值,如果其他開發(fā)者沒有聲明這個變量,就會使用 green 這個變量值,我們來看下編譯后的效果:

h1 {
  color: red;
}

上面我們演示了 !default 標(biāo)識符的作用,這個在你使用 Sass 開發(fā)一個獨立的模塊的時候,或者使用 Sass 開發(fā)一個庫來供他人使用的時候,!default 標(biāo)識符石非常有用的!

4. 實戰(zhàn)經(jīng)驗

上面我們已經(jīng)講解了 Sass 變量的語法和使用,那在企業(yè)的實際項目中是怎么應(yīng)用 Sass 變量的呢?這里以一個使用 webpack 搭建的前端項目為例,一般我們都會抽離出 1~n 個文件來專門聲明 Sass 變量(抽離出幾個文件視項目大小而定),如下圖所示:

圖片描述

如上圖所示,我們一般會在 styles 目錄下新建一個 variables.scss 文件來管理聲明的全局變量,我們接著來看下在這個文件中是怎么寫的:

圖片描述

我們可以看到,在這個文件中不但聲明了很多變量,還對其做了注釋,這樣就很易于后期的管理,尤其是在多人開發(fā)的大型項目中,對整個項目的樣式提取出一些全局變量是很有必要的!

5. 小結(jié)

本節(jié)教程我們主要講了 Sass 變量的使用及語法,主要包括:

  • 變量的聲明
  • 變量的引用
  • 變量的作用域

我們還是通過下圖來回憶一下本節(jié)的內(nèi)容:
圖片描述

在實際的項目中,Sass 變量的使用頻率也是非常高的,不亞于 Sass 嵌套,所以一定要好好掌握這一節(jié)的內(nèi)容,變量的應(yīng)用會讓你更加順手的去管理項目中的樣式!