SASS变量的文件间作用域

3
为了使用:
@include box-shadow(0 0 10px black);

您需要包含这个“库”:

@import "compass/css3";

稍后在文件中,我将包含其他的scss:

@import "sidebar/main";

在sidebar/_main.scss中,当我调用相同的内容:

@include box-shadow(0 0 10px black);

Compass出现错误:

< ... Undefined mixin 'box-shadow'.>

这是否意味着我需要将库文件抽象化到自己的库文件中,然后在每个其他的scss文件中都包含该文件?
1个回答

2
将侧边栏/main.scss重命名为sidebar/_main.scss - 不需要进行其他代码更改。
这会告诉sass编译器不将侧边栏/main.scss文件编译成单独的css文件,而是将其包含在主scss文件中。
该过程的工作方式如下:
sass编译所有包含的主scss文件并生成css(由于在顶部包含了compass,因此没有错误) sass编译所有其他不以_开头的scss文件,但由于这些文件没有包含compass,因此会抛出错误。

我知道'_'的功能。我已经将文件命名为_main.scss。问题是它不知道在前一个文件中定义的变量 - 包括sidebar/_main.scss的那个文件。 - Daniel Birowsky Popeski
然后你可以在第二个文件中安全地包含指南针要求。这不会使代码膨胀,因为它只包含@mixins(至少是css3),它们没有被编译。 - Marius Stuparu
这是我所做的。但我不喜欢那种方法。我不喜欢在每个其他的scss文件中都包含那个文件,因为我倾向于将视图组织成子目录。 - Daniel Birowsky Popeski

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接