5

我只想在尚未设置变量的情况下设置它。

所以...

_layout.scss

$page-width: 1100px;

但是,在我的_module.scss文件中,我不想依赖_layout.scss

我想做这样的事情:

$page-width = $page-width ?? 960px; 
// If $page-width exists, use it, otherwise set it to a default of 960px;

我想要一些在 SASS 3.2 中更可取的东西。我在这里找到了解决方案,否则:

global-variable-exists 在 Sass 中触发错误

4

3 回答 3

7

我相信您正在寻找变量 defaults,而 SASS 支持它们。变量默认值允许您分配给变量,如果它们尚未!在值的末尾使用分配。

在您的情况下,您可以在以下位置使用它_layout.css

$page-width: 1100px;

然后在_module.scss你可以

$page-width: 960px !default;

这大致相当于说assign $page-width to 960px unless $page-width is already defined

查看有关默认变量的文档。

于 2014-10-09T19:33:20.847 回答
1

Mohamad 的答案是您的特定代码示例的最佳答案,但值得一提的是,Sassor运算符有时可以用作??运算符的替代品:

$my-property: $uncertain-variable or $backup-value; 

我说'有时',因为只有你的$uncertain-variable定义才好。

这比某些语言(<em>cough JavaScript)更可靠,因为正如Sass 文档指出的那样:

一些语言认为更多的值是虚假的,而不仅仅是falsenull。Sass 不是其中一种语言!空字符串、空列表和数字0在 Sass 中都是真值。

我想是否要使用or这种方式是个人喜好问题。虽然它非常简洁,但您可以争辩说@if语句(或if()函数)更明确。

于 2021-06-24T00:33:55.517 回答
0

是的。从 3.1.2 版开始,有一个if函数,它接受三个参数;要检查的条件和两个值,其中一个根据结果返回:

if(condition, value-returned-if-true, value-returned-if-false);

当您不想在代码的其他地方设置默认值时,这可能很有用。

于 2020-12-13T18:50:35.150 回答