我运行这个 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(使用前将#替换为@)