我用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之类的?
我也在寻找你问题的答案。对应的答案正确导入所有函数不存在。
这就是为什么我写了一个python脚本,你需要把它放在你的scss文件夹的根目录下,就像这样:
- scss
|- scss-crawler.py
|- abstract
|- base
|- components
|- layout
|- themes
|- vender
然后它将遍历树并找到所有scss文件。一旦执行,它将创建一个名为main.scss的scss文件
#python3
import os
valid_file_endings = ["scss"]
with open("main.scss", "w") as scssFile:
for dirpath, dirs, files in os.walk("."):
# ignore the current path where the script is placed
if not dirpath == ".":
# change the dir seperator
dirpath = dirpath.replace("\\", "/")
currentDir = dirpath.split("/")[-1]
# filter out the valid ending scss
commentPrinted = False
for file in files:
# if there is a file with more dots just focus on the last part
fileEnding = file.split(".")[-1]
if fileEnding in valid_file_endings:
if not commentPrinted:
print("/* {0} */".format(currentDir), file = scssFile)
commentPrinted = True
print("@import '{0}/{1}';".format(dirpath, file.split(".")[0][1:]), file = scssFile)
一个输出文件的例子:
/* abstract */
@import './abstract/colors';
/* base */
@import './base/base';
/* components */
@import './components/audioPlayer';
@import './components/cardLayouter';
@import './components/content';
@import './components/logo';
@import './components/navbar';
@import './components/songCard';
@import './components/whoami';
/* layout */
@import './layout/body';
@import './layout/header';
我创建了一个名为__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"。
Dennis Best给出的公认答案是:“否则,加载顺序是而且应该是无关紧要的……如果我们做得正确的话。”这是不正确的。
如果你做的事情是正确的,你使用css的顺序来帮助你减少特异性和保持你的css简单和干净。
我组织导入的方法是添加一个_all。scss文件在一个目录,在那里我导入所有相关的文件,在正确的顺序。
这样,我的主导入文件就会简单而干净,就像这样:
// Import all scss in the project
// Utilities, mixins and placeholders
@import 'utils/_all';
// Styles
@import 'components/_all';
@import 'modules/_all';
@import 'templates/_all';
如果你需要,你也可以为子目录这样做,但我不认为你的css文件的结构应该太深。
虽然我使用了这种方法,但我仍然认为在sass中应该存在glob导入,用于顺序无关紧要的情况,比如mixin目录甚至动画。