SCSS 變數作用域
SCSS之所以便利,是因為它具有了程式語言的某些特性。
讓原本規則刻板的CSS變的靈活起來,下面介紹一下SCSS中的作用域概念。
幾乎所有程式語言都有作用域概念的涉及,原理大同小異,SCSS中的也是如此。
SCSS中,變數具有兩種作用域型別:
(1).全域性作用域。
(2).區域性作用域。
預設情況下,定義在選擇器之內的變數為區域性變數,定義在選擇器之外的為全域性變數。
看一段程式碼例項:
[Scss] 純文字檢視 複製程式碼$bg-color: green; div{ color:$bg-color; }
上面的程式碼宣告瞭一個全域性變數,它在全域性範圍都是有效的。
編譯成css程式碼如下:
[CSS] 純文字檢視 複製程式碼div { color: green; }
再來看一段程式碼例項:
[Scss] 純文字檢視 複製程式碼$bg-color: green; div{ $border-width:5px; color:$bg-color; border:$border-width solid red; } p{ border:$border-width solid red; }
上面的程式碼會報錯,因為$border-width是區域性作用域,不能夠在p選擇器中使用。
特別說明:如果在選擇器中宣告瞭一個變數,那麼在此選擇器中巢狀的子選擇器都可以使用此變數。
程式碼例項如下:
[Scss] 純文字檢視 複製程式碼.wrap { $bg-color: red; &:after { background: lighten($bg-color, 10%); } }
上面的程式碼編譯成css程式碼如下:
[CSS] 純文字檢視 複製程式碼.wrap:after { background: #ff3333; }
下面再來看一個程式碼例項:
[Scss] 純文字檢視 複製程式碼@function my-function() { $text-color: black; @return $text-color; } .wrap { color: my-function(); &:after{ background: $text-color; } }
上面的程式碼會報錯如下:
[CSS] 純文字檢視 複製程式碼Error: Undefined variable: "$text-color".
這是因為變數的作用域是在其宣告的時候就確定了,而不是在呼叫的時候確定。
全域性變數和區域性變數也可以是同名的,不過區域性變數會覆蓋全域性變數。
程式碼例項如下:
[Scss] 純文字檢視 複製程式碼$text-color:red; @mixin button-style { $text-color: lime; color: $text-color; } @mixin link-style { $text-color: black; color: $text-color; } button { @include button-style; } a { @include link-style; } .wrap { background: $text-color; }
上面程式碼的編譯結果如下:
[CSS] 純文字檢視 複製程式碼button { color: lime; } a { color: black; } .wrap { background: red; }
在區域性作用域,同名區域性變數會覆蓋全域性變數。
使用!global可以改變區域性變數的作用域,具體可以參閱scss !global一章節。
相關文章
- 變數作用域變數
- JS變數作用域JS變數
- golang變數作用域Golang變數
- python變數與變數作用域Python變數
- PL/SQL變數作用域SQL變數
- lisp 變數的作用域Lisp變數
- LoadRunner變數作用域變數
- C# 變數作用域C#變數
- 變數物件與作用域鏈變數物件
- JavaScript中變數和作用域JavaScript變數
- JavaScript之變數及作用域JavaScript變數
- java中變數的作用域Java變數
- Go 語言變數作用域Go變數
- JavaScript變數作用域之殤JavaScript變數
- JavaScript 變數的作用域鏈JavaScript變數
- javascript中的作用域(全域性變數和區域性變數)JavaScript變數
- 函式(三)作用域之變數作用域、函式巢狀中區域性函式作用域、預設值引數作用域函式變數巢狀
- 現代 JavaScript 的變數作用域JavaScript變數
- Go語言中的變數作用域Go變數
- 變數、作用域與記憶體變數記憶體
- Shell變數的作用域問題變數
- ES6(二: 變數作用域)變數
- js中變數作用域問題JS變數
- 變數的作用域--js閉包變數JS
- Java 8 之 lambda 變數作用域Java變數
- 理解 Javascript 中變數的作用域JavaScript變數
- Day08-常量、變數、作用域變數
- SCSS 變數的宣告CSS變數
- golang變數作用域問題-避免使用全域性變數Golang變數
- Go 中的動態作用域變數Go變數
- ES6 變數作用域總結變數
- 注意for迴圈中變數的作用域變數
- c++臨時變數的作用域C++變數
- Python 函式和變數作用域Python函式變數
- Java基礎06:變數、常量、作用域Java變數
- 語法1-變數、常量、作用域變數
- Go基礎知識-02 作用域 常量 變數 作用域(持續更新)Go變數
- 原型模式故事鏈(5)--JS變數作用域、作用域鏈、閉包原型模式JS變數