Sass中如何导入文件

Posted 书和咖啡

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Sass中如何导入文件相关的知识,希望对你有一定的参考价值。

在 CSS 中我们可以通过 @import 指令将一个 css 文件导入到另一个 css 文件中。但是它有一个需要注意的地方,就是只有执行到 @import 指令时,浏览器才会去下载其他 css 文件,这导致页面加载起来特别慢,所以并不太常用。

而 Sass 语言中同样支持 @import 指令的使用,并且与 CSS 中有一些区别,下面我们来看一下 Sass 中是如何使用 @import 指令导入文件的。

Sass 导入文件

Sass 中也有一个 @import 规则,但是与 CSS 有一些不同,CSS 中 @import 指令在每次调用时,都会都会创建一个额外的 HTTP 请求。Sass 中的 @import 规则在生成 CSS 文件时就把相关文件导入进来,不需要额外的 HTTP 请求。

在导入 Sass 文件时,可以不用导入文件的全名,省略 .sass 或者 .scss 后缀名。这样在不修改样式表的前提下,就可以修改被导入的 Sass 样式文件语法,在 sassscss 语法之间随意切换。

示例:

例如已知现有两个Sass 文件:

// first.scss 文件
.xkd{
    font-size: 14px;
    p{
        color: pink;
    }
}
// second.scss 文件
.f14{
    font-size: 14px;
}
.f16{
    font-size: 16px;
}

如果我们需要将 second.scss 文件导入到 first.scss 文件中,可以像下面这样:

.xkd{
    font-size: 14px;
    p{
        color: pink;
    }
}
@import "./second";

然后执行编译命令:

sass first.scss:first.css --style expanded

上述代码编译后的 CSS 代码,如下所示(first.css):

.xkd {
  font-size: 14px;
}
.xkd p {
  color: pink;
}

.f14 {
  font-size: 14px;
}

.f16 {
  font-size: 16px;
}

可以看到 second.scss 文件中的代码也成功编译到了 first.css 文件中。

需要注意的是,在 CSS 中@import 指令必须位于文件的顶部,而在 Sass 中 @import 指令则可以位于文件中的任意位置。

由于 Sass 可以兼容原生 CSS 语法,所以我们也可以在 Sass 文件中导入 CSS 文件。

使用SASS部分文件

在一个实际项目中会可能会创建很多 Sass 文件,但是一般不会每个 Sass 文件都有一个对应的 CSS 文件,而是将少数几个 Sass 文件生成 CSS 文件,其他的 Sass 文件则通过 @import 导入到这些 Sass 文件中。一般不需要生成独立 CSS 文件的 Sass文件称为局部文件,Sass 中有特殊的约定来命名这些文件。

Sass 局部文件的文件名以下划线开头,这样 Sass 就不会在编译时单独编译这个文件输出 CSS,而只把这个文件用作导入。当导入局部文件时,可以省略文件名开头的下划线。

示例:

例如现在有一个局部文件 _myfile.scss ,这个文件在编译时不会被生成一个对应的 CSS 文件,而是导入到其他的 Sass 文件中。导入格式如下所示:

@import "_myfile";

嵌套导入

Sass 文件的导入和 CSS 还有一点不同,就是 Sass 支持 import 命令写嵌套语法中,导入的 Sass 局部文件就会被直接插入到 CSS 规则内导入它的地方。

示例:

例如现在有一个局部 Sass 文件 _myfile.scss

.xkd{
    font-size: 14px;
}

然后将这个局部文件导入到另一个 Sass 文件 style.scss 中:

.div{
    color: #ccc;
    .div-top{
        border: 1px solid #000;
        @import "./myfile";
    }
}

编译成 CSS 代码:

.div {
  color: #ccc;
}
.div .div-top {
  border: 1px solid #000;
}
.div .div-top .xkd {
  font-size: 14px;
}

可以看到编译后的 CSS 文件中,局部文件 _myfile.scss 中的样式,被嵌套在了 .div-top 选择器中。

以上是关于Sass中如何导入文件的主要内容,如果未能解决你的问题,请参考以下文章

Sass中如何导入文件

使用 SASS 时,如何从不同目录导入文件?

gulp-sass @import CSS 文件

如何在导入的 sass 文件中使用本地 webfont?

我可以使用 sass 导入外部托管的文件吗?

如何使用 gulp 从 node_modules 导入 bootstrap 4 sass/scss