SASS 中變量的默認值


SASS 中定義的變量,后設置的值會覆蓋舊的值。

$color: red;
$color: blue;

.btn {
color: $color;
}

編譯后為:

.btn {
  color: blue; }

如果你編寫了一個 UI 庫提供 SASS 文件,可能會提供一些參數供用戶使用時自定義。而在 SASS 組件內部,我們需要應用上用戶設置的這些值。但是如果使用者沒有自定義變量的值,那這些變量應該有自己的默認值。

利用前面提到的覆蓋機制是不能實現的。因為無論是你在 @import UI 庫之前設置還是之后,都不能影響這個導入文件中的值。如果你設置的值在導入之前,那么 UI 庫中的變量因為在后面,所以你的設置會被覆蓋而不起作用;如果你的設置在導入之后,那更加不起作用了。

假設這是 UI 中的樣式文件:

_lib.scss

$color: red;
.btn {
    color: $color;
}

在另一個文件中使用,並且試圖自定義變量的值:

page.scss

@import 'lib';
$color: blue;

或:

page.scss

$color: blue;
@import 'lib';

兩者編譯結果均為:

.btn {
  color: red; }

!default

針對這種情況,SASS 提供了 !default 標識。將該標識應用於變量值后面,表示如果該變量沒有在其他地方定義或即便定義了但值為 null,那此處設置的默認值才生效,否則使用其他地方設置的那個值。

將上面 _lib.scss 進行改造:

_lib.scss

- $color: red;
+ $color: red!default;
.btn {
    color: $color;
}

使用:

$color: blue;

@import "lib";

注意:需要將自定義的值先於 @import,否則也不生效。

此時編譯結果將是想要的那樣,應用上了外部自定義的變量值。

.btn {
  color: blue; }

相關資源


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM