Sass的@if语句中的@import

我只想加载登录页面所需的CSS以提高性能。在其他页面上,我需要一个分组的CSS文件,该文件将在包含我所有CSS的每个页面上缓存。

我有以下文件:

minifiedcssforloginpage.scss
grouped-pages.scss

在minifiedcssforloginpage.scss中,我声明$ load-complete-css:false。之后,我导入myproject.scss,其中包含模块,布局,核心的所有导入...在myproject.scss中,我想做类似的事情

@if $load-complete-css {
     @import module1;
     @import module2;
     @import module3;
}

因此,minifiedcssforloginpage.scss会生成minifiedcssforloginpage.css,而css少于grouped-pages.css(将$ load-complete-css变量设置为true)。

但是我收到一个错误,那就是这是不可能的:“在控制指令或mixins中可能无法使用导入指令”。

LEY小卤蛋Near2020/03/23 11:50:48

尽管核心开发团队正在考虑实施全新的依赖系统,但他们仍不愿实现此功能。


请参阅以下Github问题:

樱前端2020/03/23 11:50:48

这是不允许的事情之一。您唯一可以做的就是将这些导入转换为mixin(将文件导入外部,@if并在适当的地方调用mixin)。

澄清:

_partial.scss

@mixin partial {
    .test { color: red }
    // other styles here
}

styles.scss

@import "partial";
@if $someval == true {
    @include partial;
}