如果您有一个 main.scss 文件,该文件将被编译,并且您想从另一个部分文件(例如 _colors.scss)导入变量、mixins 等。您可以通过使用@use 规则将部分_colors.scss 中的成员加载到main.scss 中来实现。这允许从模块中加载的成员在您的 main.scss 样式表中使用点符号进行引用。
假设您的_colors.scss 文件如下所示:
$bodyColor: maroon;
$someOtherColor: #f06;
/* adding a mixin for demo */
@mixin highlight($c, $bg) {
color: $c;
background: $bg;
}
/* some extra styles pertaining to _color.scss */
.some-styles {
color: $someOtherColor;
}
注意:@use 的语法是 @use <url> as <namespace>;。
您可以使用 @use 规则将变量/混合等加载到 main.scss 中,并在整个程序中引用命名空间:
@use "./colors" as c;
body {
background-color: c.$bodyColor;
}
.highlighted {
@include c.highlight(#fff, #f06);
}
或者不定义命名空间,例如:
@use "./colors" as *;
body {
background-color: $bodyColor;
}
.highlighted {
@include highlight(#fff, #f06);
}
您当然可以在_colors.scss 中包含body {} 声明并以与上述相同的方式加载它,但我认为您希望将body 样式块放在main.scss 中并简单地引用来自@ 的加载变量987654342@。如果您有一个包含许多部分的目录并且想要将它们加载到 main.scss 而不为每个加载编写单独的 @use 规则,那么引入带有 @forward 规则的 index file 以将部分的整个目录加载到 main.scss使用单个 @use 规则。