Sass中如何给全局变量赋值?

2023-12-02

我运行这个 Sass 代码:

$a: 1;
@if 2 + 2 == 4 {
    $a: 2;
}
@debug $a;

我期望看到 2。然而,输出是:

Line 5 DEBUG: 1

我知道 Sass 创建了一个新的$a里面的变量@if范围。我怎样才能改变这种行为并为全局分配一个值$a?

我使用 Sass 3.4.0。


当您使用 Sass 3.4+ 时,您应该附加!global标记到您的变量声明:

$a: 1;
@if 2 + 2 == 4 {
    $a: 2 !global;
}
@debug $a; // will output 2

原本的SASS_REFERENCE在变量声明中指出:

“变量仅在嵌套选择器级别内可用 它们的定义位置。如果它们是在任何嵌套之外定义的 选择器,它们随处可用。

but the SASS_CHANGELOG 3.4+表明这种行为已经改变:

所有变量赋值不在文档的顶层现在 默认为本地. 如果存在同名的全局变量 不会被覆盖,除非!global使用标志。

例如,$var: value !global将分配给$var全球。可以使用以下方法检测此行为feature-exists(global-variable-shadowing).

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Sass中如何给全局变量赋值? 的相关文章

随机推荐