variables - SASS 忽略在 if 语句中定义的变量

标签 variables if-statement sass

我有一个名为 style.scss 的文件,其中包含以下代码:

@import 'variables';

body {
    color: $text-color;
    background: $background-color;
}

还有一个名为 _variables.scss 的部分:
$colorscheme: white;

@if $colorscheme == white {
    $text-color: #333;
    $background-color: #fff;
}
@else {
    $text-color: #ccc;
    $background-color: #333;
}

if 语句正常工作,但内部定义的变量不起作用。
当我尝试编译它时,我不断收到:

Syntax error: Undefined variable: “$text-color”.

最佳答案

这完全是预料之中的。变量有一个作用域。如果您在控制块内定义它们(如 if 语句),那么它们在外部将不可用。所以,你需要做的是像这样在外面初始化它:

$text-color: null;
$background-color: null;
@if $colorscheme == white {
    $text-color: #333;
    $background-color: #fff;
}
@else {
    $text-color: #ccc;
    $background-color: #333;
}

或者...
$text-color: #ccc;
$background-color: #333;
@if $colorscheme == white {
    $text-color: #333;
    $background-color: #fff;
}

虽然使用 if() 会不那么冗长像这样的功能:
$text-color: if($colorscheme == white, #333, #ccc);
$background-color: if($colorscheme == white, #fff, #333);

关于variables - SASS 忽略在 if 语句中定义的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15371332/

相关文章:

JavaScript 检查单选按钮

css - Zurb Foundation 中的 CSS 导致 Internet Explorer 7 崩溃

bash - Rundeck 跨作业步骤共享变量

linux - ssh-keygen 接受标准输入

VB.NET 变量范围

javascript - 我想根据特定条件更改状态

javascript - 如何在删除换行符的同时将 HTML 文本转换为 Javascript 变量?

javascript - 如果选择单选按钮显示警报

css - 如何在 Webpack 4 中启用 SASS 模块

javascript - SASS 部分导入在 react 中不起作用