Sass

Sass
Tomsass
sass同less 一样也是 CSS 预处理语言。其语法也极其相似。
sass中文网
安装
vscode 插件
- vscode 中安装插件 Live Sass Compiler
ctrl+shift+P键入Live Sass: Watch Sass以开始实时编译,或者按键入Live Sass: Stop Watching Sass以停止实时编译。
webpack环境
在webpack4中使用 node-sass和 sass-loader。详情请参考webpack 开发环境配置。
语法
sass 文件后缀有两种 : .scss 和更早期的 .sass。这两种后缀在语法上是有差异的。建议使用 .scss ,这种格式仅在 CSS3 语法的基础上进行拓展,所有 CSS3 语法在 SCSS 中都是通用的,同时加入 Sass 的特色功能。
注释
1 | /* 这是多行注释 */ |
// 这种注释内容不会出现在生成的css文件中
/ 这种注释内容会出现在生成的css文件中 /
@import
使用 @import 导入 css或 .scss文件,如果是 .scss文件后缀可以省略。
1 | @import './index.css'; |
数据类型
Sass 支持 6 种主要的数据类型:
- 数字,
1, 2, 13, 10px - 字符串,有引号字符串与无引号字符串,
"foo", 'bar', baz - 颜色,
blue, #04a3f9, rgba(255,0,0,0.5) - 布尔型,
true, false - 空值,
null - 数组 (list),用空格或逗号作分隔符,
1.5em 1em 0 2em, Helvetica, Arial, sans-serif - maps, 相当于 JavaScript 的 object,
(key1: value1, key2: value2)
变量
使用 $ 声明变量
1 | // 声明变量 |
运算
算术运算
支持数字的加减乘除、取整等运算 (+, -, *, /, %),如果必要会在不同单位间转换值。计算的结果以最左侧操作数的单位类型为准。
1 | $box-size: 20px; |
字符串运算
+ 可用于连接字符串
1 | $text: '-resize'; |
编译输出:
1 | .box { |
运算优先级()
圆括号()可以用来影响运算的顺序
1 | p { |
编译输出为:
1 | p{ |
Mixin 混入
使用@mixin 声明要混入数据,@include 使用混入数据。
1 | // 声明要混入样式 |
带参数的Mixin
带参数的Mixin类型 js 中的函数传参。 在 @mixin 中定义参数列表,在 @include 时传入对应的参数。
注意在传入参数时需要和定义时一一对应。
1 | // 声明要混入样式 |
sass 允许使用 $name: value的方式向 @mixin 传参,这种语法可以不理会参数的先后 顺序。
1 | // 声明要混入样式 |
嵌套CSS 规则
1 | #content { |
编译输出为:
1 | /* 编译后 */ |
& 父选择器
1 | article a { |
编译输出为:
1 | article a { color: blue } |
关系选择器
1 | article { |
编译输出为:
1 | article ~ article { border-top: 1px dashed #ccc } |
继承 @extend
1 | //通过选择器继承继承样式 |
编译输出为:
1 | .error, .seriousError { |
混合器@mixin主要用于展示性样式的重用,而 @extend 类名用于语义化样式的重用。因为继承是基于类的(有时是基于其他类型的选择器),所以继承应该是建立在语义化的关系上。当一个元素拥有的类(比如说.seriousError)表明它属于另一个类(比如说.error),这时使用继承再合适不过了。











