@import让我感到困惑

时间:2014-06-20 07:18:59

标签: sass compass-sass

在罗盘或旧版本中,对于像这样的每个文件,它可以@import一次

_mixin.sass

=test_mixin()
    color: #AAFFCB

screen.scss

@import "include/_mixin";
@import "print.scss";
header{ @include test_mixin; }

print.scss

header{ @include test_mixin; }

输出screen.css

header {
  color: #aaffcb;
}
header {
  color: #aaffcb;
}

输出print.css

header {
  color: #aaffcb;
}

它应该没有任何错误,但在新版本中有错误 error sass/print.scss (Line 5: Undefined mixin 'test_mixin'.) 我知道添加@import "_mixin.scss"到print.scss解决这个问题,但我认为如果将来我想要查找_mixin.scss文件名,如果我有很多文件包括_mixin.scss我觉得它太累了T ^ T

抱歉我的英文不好

我怎么能解决这个问题?

谢谢:)

2 个答案:

答案 0 :(得分:0)

我在这里看不到任何大问题。由于print.scss是单独的CSS文件(它在开头没有下划线),因此它不知道什么是test_mixin函数。您应该在开头使用与screen.scss文件相同的内容:

@import "include/_mixin";

我也不明白为什么要在print.scss文件中导入screen.scss文件。对我而言,它没有任何意义。

您当然可以创建一个_init文件并将其导入每个完整的scss文件(非部分),例如:

@import "base/_init";

在此_init.scss文件中,您可以添加导入规则。这样,即使您更改了文件名,也可以在_init.scss文件中更改一次。

答案 1 :(得分:0)

以下是一些基础知识: 那些你不希望被生成为独立CSS文件的SCSS文件,你在开头用一个下划线命名,例如: _mixin.scss,它将是您的部分。 您想要拥有的文件作为单独的CSS 文件,您可以像往常一样使用下划线,例如screen.scss

然后,如果您想在screen.scss中使用偏见,则执行@import

@import "path_to_your_partials/mixin"

(注意,导入时不需要下划线) 然后,只有这样你才能使用它中的一些mixin:

@include colorize;

在独立的CSS文件中只包含部分(带有_的文件),而不是要作为CSS生成的文件,因此在screen.scss的示例中,@import "print.scss";过多。< / p>


但等等,它变得更好!

包含在同一文件中的部分可以互相访问,因此您不会在部分中执行任何其他@import

继续上面的示例,如果您有另一个文件_colors.scss,则可以在$red中使用变量_mixin.scss,如果您在screen.scss中声明导入它按正确的顺序:

@import "path_to_your_partials/colors" // has a mixin colorize
@import "path_to_your_partials/mixin"  // has a variable $red
@import "path_to_your_partials/header"

在您的部分_header.scss中,您可以同时使用_mixins.scss中的mixin和_colors.scss中的变量:

@include colorize($red);

这样,当您更改部分文件名时,只能更改独立.scss文件中的名称,而不能更正所有部分文件中的名称。