Sass 快速开始
它是一个 样式预处理器. Sass 与 CSS 的关系, 逻辑上与 TypeScript 和 JavaScript 的关系是一样的.
安装 (非官方)
安装的方式推荐有两种:
- 安装 VSCode 插件, 保存 scss 文件时, 自动生成 css 与对应的 map 文件.
- 使用 node 安装 sass, 即可使用命令行来处理 sass.
Sass 的实现有多个版本, Node 版本与 Dart 版本的支持似乎是一致的.
实际上使用有两种情况:
- 伴随 bundle 工具
- 伴随 Vue 等脚手架工具
所以实际上这个安装主要用于学习阶段.
VSCode 插件
个人习惯使用 Live Sass Compiler
:
其使用方法是:
- 在编辑器下方的状态栏右侧, 有一个 监视 Sass 的按钮
- 点击该按钮后, 会启用文件监视. 在编辑
sass
,scss
等文件后, 会立即生成对应的 CSS 文件, 与 map 文件.
命令行
使用命令:
npm i -g sass
使用 sass 命令也可以监视文件生成对应 css.
可以使用 sass -h
来查询帮助.
快速学习 (官方)
主要包括下面几个主题:
- 预处理
- 变量
- 嵌套
- 部分化
- 模块
- 混入
- 集成
- 运算
1. 预处理
介绍了 sass 命令的用法, 基本可以忽略.
主要介绍了 生成文件的配置, 以及 --watch
选项的使用.
sass --watch input.scss output.css
也可以指定文件夹, 用冒号分隔
sass --watch app/sass:public/stylesheets
Sass 有两种文件格式
scss
格式, 表达层级使用花括号, 后缀名用.scss
sass
格式, 表达层级使用缩进 (如 python), 后缀名用.sass
2. 变量
Sass 中可以定义变量:
$变量名: 值
3. 嵌套
嵌套花括号后, 即会生成后代选择器 (注意非子代)
4. 部分化 partial
所谓的部分化, 可以简单的理解为 Sass 语法的模块化, 片段化. 即将 Sass 语句放在不同的文件中的处理做法.
约定: 文件名用下划线 (_
) 开头.
如此在生成 css 的时候, 部分化的 sass 不会单独生成 css 文件, 编辑器知道它是用于导入的 Sass 模块.
5. 模块化
可以将 sass 语句按照不同规则 (变量, mixins, 函数等) 放在不同的文件中, 构成模块.
然后使用 @use
来导入模块.
模块默认采用文件名作为命名空间.
逻辑上, 导入模块后相当于将模块中的表征样式的 Sass 代码混入到新文件中.
声明的样式表会合并进来, 但如变量等内容需要手动的指定.
约定:
- 模块文件使用 下划线作为前缀, 基本模型如 "
_文件名.scss
". - 导入使用
@use '文件名'
的语法来导入模块, 导入时不带下划线, 并可不用后缀, 直接使用名字, 并且该名字即为命名空间, 成员用点访问.
6. 混入 Mixins
混入是一个 对象, 可以视为一个样式表模板. 专门用于复用某个样式表片段.
使用步骤:
- 使用关键字
@mixin
语法来定义一个样式表片段. 它需要一个名字, 或许还可以带上参数. - 在需要使用样式表的地方, 使用
@include 混入的名字
, 如果有参数:@include 混入的名字($参数名)
会直接将样式替换 整个 @include
表达式.
语法描述:
@mixin 名字 ($参数: 默认值) {
...
样式属性: 样式值;
}
@include 名字
7. 扩展与继承
@extend
的逻辑也是一种样式表的复用形式. 其作用是将选择器与样式关联起来.
逻辑上 混入有点值传递, 扩展有种引用传递的感觉.
- 首先使用语法
%名字
来定义一组样式表, 用花括号括起来. - 在需要使用该样式的选择器下使用
@extend %名字
. - 那么就会生成要选择器使用该样式表的 CSS 部分.
逻辑上是, 用
%
定义需要复用的样式表模块. 再用@extend
来确定什么选择器需要作用该样式表.
8. 运算
Sass 预处理器的内置模块中提供了数学模块, 可以进行简单的数学运算
使用步骤:
- 使用
@use "sass:math"
导入数学模块 - 即可在代码中使用
+
,-
,*
,math.dev(被除数, 除数)
, 以及%
.