Sass有两种 sass和scss。两者差别比较小,SCSS是在CSS3的基础上作拓展,而SASS是一种简化格式,用缩进代替{},用换行代替分号等,这里统一使用scss。
特色:
- 彻底兼容CSS3;
- 在CSS基础上增长变量、嵌套、混合等功能;
- 有函数进行运算
嵌套
Sass容许CSS里进行嵌套,内层样式将他的外层的选择器做为父选择器;
在内层中可使用&来代替嵌套规则外的父选择器。多层嵌套时,最外层的父选择器会一步一步往下传递;
&后也能够接其余字符生成符合的选择器;
某些 CSS 属性遵循相同的命名空间 (namespace),好比 font-family, font-size, font-weight 都以 font 做为属性的命名空间。
如:
.funky {
font: {
family: fantasy;
size: 30em;
weight: bold;
}
}
编译为:
.funky {
font-family: fantasy;
font-size: 30em;
font-weight: bold; }复制代码
变量$
能够像js里同样定义变量,而后在属性里使用。
如:$width;5px;
使用:
width:$width;
}复制代码
其余
Scss里支持算法运算,()等
@-Rules 和 指令
sass支持全部的CSS3的@功能。
@import 导入
Sass拓展了CS是的@ipmort功能,被导入的文件中包含的变量和指定均可以在导入的文件中使用。
一般 @import会寻找并导入scss文件,但在如下状况下,@import仅做为普通的CSS语句,不会导入Sass。
- 文件类型为css
- 以http://开头;
- 以url();
- @import中包含media queries;
若须要导入scss文件,但又不但愿将其编译为css,能够在文件名前加下划线,可是在导入语句中却不须要加下划线。ps:不能同时存在_A.scss和A.scss这样的同名文件,存在时_A将被忽略
@media
与CSS相似,这里只是容许其在CSS规则中嵌套。
@extend
若一个元素的样式与另外一个的彻底同样,可是又新增了额外样式,这样就可使用extend。
能够容许一个元素继承多个元素的样式,同名的样式,后面的覆盖前面的;
@mixin
与extend相似,都是一种简化代码,重复使用的指令。
@mixin 定义一段样式,@include则能够引用@mixin定义的样式。
//定义 $color 为参数,:green为参数默认值,当没有参数的时候改设置生效,其余的与下文的函数指令同样
@mixin btn($color:green){
color:$color;
font-size:20px;
}
//使用
.page{
@include btn(blue);
}
复制代码
mixin里能够带参数,而extend不行。css
函数指令
Sass 支持自定义函数。
@function grid-width($n:1) { //@function 修饰变量,证实这是一个方法;若调用时没有入参,则使用默认值
@return $n*5+'px'; //@return 修饰返回值
}
复制代码
其余指令
略