【发布时间】:2018-12-08 07:48:28
【问题描述】:
如何使用 sass 循环功能导入多个文件?这是我的文件树结构。
/scss/
/pages/
/home/
home.scss
home-sm.scss
home-md.scss
home-lg.scss
/about/
about.scss
about-sm.scss
about-md.scss
about-lg.scss
/contact/
contact.scss
contact-sm.scss
contact-md.scss
contact-lg.scss
pages.scss
并在pages.scss 中导入结构,如下所示
//home
@import "home/home";
@import "home/home-xs";
@import "home/home-sm";
@import "home/home-md";
@import "home/home-lg";
//about
@import "about/about";
@import "about/about-xs";
@import "about/about-sm";
@import "about/about-md";
@import "about/about-lg";
//contact
@import "contact/contact";
@import "contact/contact-xs";
@import "contact/contact-sm";
@import "contact/contact-md";
@import "contact/contact-lg";
我想使用 sass mixins 或函数或类似方法来减少 import 步骤。
更新
添加了一些我真正想要的 sass mixin 代码示例
注意:这只是一个演示目的,@import 在 mixins 中不起作用。
@mixin importPage($pageName) {
/***********************
// #{$pageName} page
***********************/
@import "#{$pageName}/#{$pageName}";
@import "#{$pageName}/#{$pageName}-xs";
@import "#{$pageName}/#{$pageName}-sm";
@import "#{$pageName}/#{$pageName}-md";
@import "#{$pageName}/#{$pageName}-lg";
}
//Importing Files
@include importPage(home);
@include importPage(about);
@include importPage(contact);
注意:我认为在某些情况下使用@import "scss/**/*" 方法不是一个好选择,例如优先排序文件、覆盖等。
任何帮助将不胜感激。
【问题讨论】:
-
我看过了,但是包含的顺序应该是一个问题。
-
你能把后缀文件的导入语句移到主文件中吗,比如
contact.scss应该包含-xs、-sm、-md、-lg文件?它不会减少import语句的数量,但有助于对这些文件进行分类和放置。 -
contact.scss 文件仅包含联系人页面的通用代码,我们需要遵循此文件结构。