我用SASS部分模块化我的样式表,就像这样:
@import partials/header
@import partials/viewport
@import partials/footer
@import partials/forms
@import partials/list_container
@import partials/info_container
@import partials/notifications
@import partials/queues
有没有办法包括整个partials目录(它是一个充满sas -partials的目录),比如@import compass之类的?
你可以生成SASS文件,自动导入所有东西,我使用这个Gulp任务:
concatFilenames = require('gulp-concat-filenames')
let concatFilenamesOptions = {
root: './',
prepend: "@import '",
append: "'"
}
gulp.task('sass-import', () => {
gulp.src(path_src_sass)
.pipe(concatFilenames('app.sass', concatFilenamesOptions))
.pipe(gulp.dest('./build'))
})
你也可以控制导入顺序的文件夹,像这样:
path_src_sass = [
'./style/**/*.sass', // mixins, variables - import first
'./components/**/*.sass', // singule components
'./pages/**/*.sass' // higher-level templates that could override components settings if necessary
]
你可以使用一些变通方法,在你想导入的文件夹中放置一个sass文件,然后像这样导入该文件中的所有文件:
当前文件路径:主要/ / _current.scss
@ import“占位符”;
@ import“颜色”;
在下一个dir级别的文件中,你只需使用import for file导入该dir级别的所有文件:
文件路径:主要/ main.scss
@ import“EricMeyerResetCSSv20”;
@ import“clearfix”;
@ import“当前”;
这样你就有了相同数量的文件,就像你导入了整个目录。注意顺序,最后出现的文件将覆盖匹配的斯蒂尔。
这可能是一个老问题,但在2020年仍然相关,所以我可能会发布一些更新。
自19年10月的更新以来,我们通常应该使用@use而不是@import,但这只是一个注释。这个问题的解决方案是使用索引文件来简化包括整个文件夹。下面的例子。
// foundation/_code.scss
code {
padding: .25em;
line-height: 0;
}
// foundation/_lists.scss
ul, ol {
text-align: left;
& & {
padding: {
bottom: 0;
left: 0;
}
}
}
// foundation/_index.scss
@use 'code';
@use 'lists';
// style.scss
@use 'foundation';
https://sass-lang.com/documentation/at-rules/use#index-files
我创建了一个名为__partials__的文件。SCSS在同一目录的部分
|- __partials__.scss
|- /partials
|- __header__.scss
|- __viewport__.scss
|- ....
在__partials__。scss,我写了这些:
@import "partials/header";
@import "partials/viewport";
@import "partials/footer";
@import "partials/forms";
....
所以,当我想导入整个partial时,只需写@import "partials"。如果我想导入其中任何一个,我也可以写@import "partials/header"。