是否有任何方法可以用Sass的@import命令导入一个常规的CSS文件?虽然我没有使用sass的所有SCSS语法,但我仍然喜欢它的组合/压缩功能,并且希望能够使用它,而不必将我的所有文件重命名为*.scss
当前回答
将css文件导入到scss中只需使用this: @ import“src / your_file_path”; 没有在结尾使用扩展名.css
其他回答
这是从3.2版本开始实现和合并的(2015年1月2日为libsass合并了#754,最初的问题定义在这里:sass#193 #556, libsass#318)。
长话短说,下面的语法:
导入(包括)原始css文件,语法是**,结尾没有' .css ' **扩展名(导致实际读取部分' s[ac]ss|css ',并将其内联到SCSS/SASS): @ import“路径/ /文件”; 以传统的方式导入CSS文件,语法按照传统的方式,**以' .css '扩展名**结尾(结果是' @import url("path/to/file.css"); '在你编译的CSS中): @ import“路径/ / file.css”;
它非常好:语法优雅简洁,而且向后兼容!它与libsass和node-sass一起出色地工作。
__
为了避免在评论中进一步猜测,明确地写下:基于Ruby的Sass在经过7年的讨论后仍然没有实现这个特性。在写这篇文章的时候,我们承诺在4.0中会有一个简单的方法来实现这一点,可能是@use的帮助。似乎很快就会有一个实现,新的“计划中的”“提案已接受”标签被分配给#556问题和新的@use特性。
UPD:在2020年10月26日,lib-sass被弃用,因此第556期立即关闭。
__
答案可能会更新,只要有一些变化。
在撰写本文时,这似乎还没有实现:
https://github.com/sass/sass/issues/193
对于libsass (C/ c++实现),import对*.css的作用与对*的作用相同。SCSS文件-只需省略扩展名:
@import "path/to/file";
这将导入路径/到/file.css。
更多细节请看这个答案。
参见Ruby实现的答案(sass gem)
如果我是正确的,css与scss兼容,所以你可以将css的扩展名更改为scss,它应该继续工作。一旦你改变了扩展名,你可以导入它,它将包含在文件中。
如果你不这样做,sass将使用css @import,这是你不想要的。
如果你有一个你不想修改的。css文件,也不要把它的扩展名改成。scss(例如,这个文件来自一个你不维护的fork项目),你可以创建一个符号链接,然后把它导入到你的。scss中。
创建一个符号链接:
ln -s path/to/css/file.css path/to/sass/files/_file.scss
将符号链接文件导入目标.scss:
@import "path/to/sass/files/file";
您的目标输出. CSS文件将保存导入的符号链接.scss文件的内容,而不是CSS导入规则(由评论投票最高的@yaz提到)。并且您没有具有不同扩展名的重复文件,这意味着在初始.css文件中所做的任何更新都会立即导入到目标输出中。
符号链接(也称为符号链接或软链接)是一种特殊类型的文件 它包含以绝对格式对另一个文件的引用 或者相对路径,这会影响路径名解析。 ——http://en.wikipedia.org/wiki/Symbolic_link
您可以使用第三方导入器来定制@import语义。
node-sass-import-once,它与node-sass (Node.js)一起工作,可以内联导入CSS文件。
直接使用的例子:
var sass = require('node-sass');,
importOnce = require('node-sass-import-once');
sass.render({
file: "input.scss",
importer: importOnce,
importOnce: {
css: true,
}
});
使用示例grunt-sass config:
var importOnce = require("node-sass-import-once");
grunt.loadNpmTasks("grunt-sass");
grunt.initConfig({
sass: {
options: {
sourceMap: true,
importer: importOnce
},
dev: {
files: {
"dist/style.css": "scss/**/*.scss"
}
}
});
注意,node-sass-import-once目前不能导入没有显式前导下划线的Sass部分。例如,使用文件partials/_partial.scss:
@ import泛音/ _partial。scss成功 @import * partials/partial。scss失败
一般来说,要注意自定义导入器可能更改任何导入语义。在开始使用之前请阅读文档。