我不相信您可以为此创建@if 语句。在 LESS 中,您可以在内部重新声明相同的变量body.purple,它只适用于该块内,但在 Sass/Scss 中重新声明变量将全局更改它。这可能并不理想,但您可以重新声明变量两次,一次在顶部用于紫色,一次在底部将其设置回默认值。
scss
// Global Variables
$blue: #0cc;
$purple: #f03;
$brand: $blue;
body {
color: $brand; // blue
}
.purple {
$brand: $purple;
color: $brand; // now purple
// all other styles
$brand: $blue;
}
.test {
color: $brand; // back to blue
}
css 输出
body {
color: #00cccc;
}
.purple {
color: #ff0033;
}
.test {
color: #00cccc;
}
这是一篇关于 LESS 和 Sass 之间的变量范围差异的文章。http://blog.freeside.co/post/41774744757/less-vs-sass-variable-scopes