现在有a.scss,b.scss、c.scss三个sass文件,如果在c.scss文件中想引入a.scss与b.scss文件,写法为:
@import "a";
@import "b";
注意啦:此处可以不写后缀名,也可以写。
补充:如果想一次性编译一个文件夹里所有的scss文件到另一目录中,相关命令为:
sass --update in:out
其中in 和 out 指的是输入输出文件夹
如上编译文件夹后会将说有的a、b、c文件编译,由于文件b引用了文件a中的变量,此时还会报错(找不到变量);因此我们只希望编译c.scss文件,解决办法即在局部文件的文件名下以下划线开头,这样sass就不会在编译时单独编译这个文件输出css,而是把这个文件用作导入。当@import 一个局部文件时还可以不写文件全名,即省略文件名开头的下划线。
导入下面这个局部文件里的变量
themes/_night-sky.scss 只需写成@import "themes/night-sky"
默认变量值
重复定义一个变量时会出现后定义变量覆盖先定义变量的情况,又或者你写了一个可被其他人通过@import 导入的sass库文件,你可能希望导入者可以定制修改sass库文件中的某些值,此时可以使用!default 标签,含义是:如果这个变量被声明赋值,那就用它声明的值,否则用这个默认值。
$fancybox-width:400px !default;
嵌套导入
```文件1:```
aside{
background:blue;
color:white;
}
```嵌套 ```
.blue-theme {
@import "blue-theme"
}
```生成```
.blue-theme aside{
background:blue;
color:white;
}
原生的css导入
由于sass兼容原生的css,所以它也支持原生的css@import。尽管通常在sass中使用@import时,sass会尝试找到对应的sass文件并导入进来,但在下列三种情况下会生成原生的css@import,尽管这会造成浏览器解析时的额外下载:
- 被导入文件的名字以.css结尾;
- 被导入文件的名字是一个URL地址(如:http://www.sass.hk/css/css.css)
- 被导入文件的名字是CSS的统一资源定位器()值。
也就是说,你不能用sass的@import直接导入一个原始的css文件,因为sass会任务你想用css原生的@import。但是因为sass的语法完全兼容css,所以可以把原始css文件改名为.scss后缀后即可直接导入了。
注释
sass提供两种注释
- // 这种注释内容不会出现生成css文件
- /* */ 这种注释内容会出现在生成的css文件中
注意啦:sass在编译中文时会出现报错的情况,解决办法:需要找到安装ruby sass的安装目录下的 engine.rb的文件,添加如下代码
Encoding.default_external= Encoding.find('utf-8')
放在所有的require XXXX后即可。
保存后,再生成的css文件即使有中文也不会报错了,生成的css文件会自动加入字符编码。