SASS中定义变量的公式如下:
// $符号固定,variables为变量名,expression为表达式
$<variables>: <expression>;
$font-size-medium: 32px / 2; // 16px
$font-size-normal: 12px + 2px; // 14px
$font-size-small: 12px; // 12px
SASS中的变量是命令式的,意味着你在修改变量前后,值可能不相同的。
$font-size: 14px;
.box {
font-size: $font-size; // 14px
}
// 修改值
$font-size: 16px;
.item {
font-size: $font-size; // 16px
}
SASS默认变量
有些时候,我们希望定义一些变量并给默认值,这样外部用户使用的时候,可以重新定义相同的变量,但变量的值由外部用户自己规定,此时可以使用默认变量!default:
$font-size: 14px !default;
$theme-color: #4093ff !default;
// 使用默认
.box {
font-size: $font-size; // 14px;
background-color: $theme-color; // #4093ff;
}
// 自己定义
$font-size: 16px;
$theme-color: #58a;
.box {
font-size: $font-size; // 16px
background-color: $theme-color; // #58a;
}
在一些组件库或者样式库中,几乎都允许用户自定义样式,其本质就是默认变量在起作用。
SASS局部变量
因为SASS允许嵌套规则,所以变量也可以定义在嵌套规则中。当在嵌套规则中定义一个变量时,此变量的访问范围只存在于此规则内,对于外部不可见,例如:
.box {
.item {
$font-size: 16px;
font-size: $font-size; // 16px;
}
.row {
font-size: $font-size; // error Undefined variable
}
}
对于嵌套规则中相同命名的变量,内层的变量会遮蔽外层的变量,例如:
.box {
$font-size: 14px;
.item {
$font-size: 16px;
font-size: $font-size; // 16px;
}
}
但是在一些流程控制语句中,变量没有遮蔽效果,例如:
$is-active: true !default;
$font-size: 14px;
$theme-color:#4093ff;
@if $is-active {
$font-size: 16px;
$theme-color:#f60;
}
.box {
font-size: $font-size; // 16px
background-color: $theme-color; // #f60
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。