目录

1. 认识 SASS

2. sass 的编译

3. sass 语法

1. sass 的 注释

2. sass 的 变量

3. sass 的 循环

4. sass 的 嵌套

5. sass 的 混入 mixin 

6. sass 的 继承 

7. sass 的 导入

4. SASS 简图 :


1. 认识 SASS

SASS

+ 一个 css 的预编译语言

+ 也是一个工具, 专门用来 书写 css 的工具

+ 作用: 帮助你快速方便简洁的书写 css


sass 的文件 :

+ 有两种文件都是用来书写 sass 内容的

  1.  .sass 后缀的文件

  2.  .scss 后缀的文件

+ 以上两种方式, 在语法和编译上没有区别

+ 唯一的区别是,  { }  和 分号(   )

  => .sass 文件 不允许 出现 { } 和 ;

SASS _ 入门版-编程知识网 

  => .scss 文件 必须 要写 { } 和  ;

SASS _ 入门版-编程知识网


sass 的引入 需要编译后使用

=> 如果直接在 html 文件内引入 .scss 或者 .sass 文件 , 浏览器不识别

+ 因为浏览器不认识 .sass 或者 .scss 文件

+ 需要一个工具把 .sass 和 .scss 文件 编译 成 .css 文件再次使用

=> 在浏览器内引入的还是 .css 文件

常见的 sass 文件编译方式 :

  1. 使用编辑器插件进行转换

    => VS Code 里面有一个叫做 Easy Sass 的插件

    => 你只要安装了这个插件, 你写完的 .sass 和 .scss 文件会 自动编译 成 .css 文件

    => 缺点: 依赖  VS Code  编辑器

SASS _ 入门版-编程知识网

  2. 使用一个叫做 SASS 的全局系统工具来完成转换

    => 可以进行编译, 需要你在命令行通过指令的形式

    => 进行文件的编译

  3. 使用前端的打包构建工具 , 进行配置

    => 在项目打包的时候, 可以使用打包功能内的某些功能来编译 sass 文件

    => 打包工具, 不是专门用来编译 sass 文件的

    => 只是对当前项目进行打包的时候, 可以一起编译打包 sass 文件


sass 工具 :

+ 目的: 为了把 .scss 和 .sass 文件编译成 .css 文件

+ 是一个可以基于 node 的 "软件"(环境 / 工具)

+ 依赖环境

  => 最早依赖 ruby 环境运行的

  => 后来依赖 python 环境运行

  => 现在依赖 node 环境运行

+ sass 工具的下载 :

  => 因为是一个依赖 node 环境运行的工具

  => 因为是一个全局工具

  => 可以使用 npm 下载安装

  => 打开命令行, 目录无所谓

  => 输入指令:

    -> win: $   npm install –global sass 

    -> OS: $ sudo npm install –global sass

+ sass 工具的检测 :

  => 打开命令行, 目录无所谓

  => 输入指令: $   sass –version 

+ sass 工具的卸载 :

  => 打开命令行, 目录无所谓

  => 输入指令:

    -> win: $   npm uninstall –global sass 

    -> OS: $ sudo npm uninstall –global sass

sass 工具的作用 :

+ 在命令行通过指令的形式把 .sass 文件或者 .scss 文件转换成 .css 文件


2. sass 的编译

利用我们下载好的全局 sass 工具来编译 .sass 和 .scss 文件

sass 编译工具在编译之后会给出一个 map 文件

作用是 映射 内容到 sass 文件内


1. 单文件编译 :
=> 使用这个工具编译一个文件 , 把该文件编译成 .css 文件
+ 打开命令行, 切换目录到你要编译的 sass 文件的目录结构
+ 输入指令: $ sass 源文件名称 生成的文件名称
        $ sass xxx.scss xxx.css
=> 编译成功以后
  -> 会得到一个 .css 文件和一个 .css.map 文件
  -> .css 文件是为了给你引入页面使用的
  -> .map 文件是为了映射到源文件使用的
+ 缺点: 
> 一次只能编译一个文件
源文件每次修改都需要重新编译
2. 单文件实时编译 :
+ 打开命令行, 目录切换到你要编译的 sass 文件的目录
+ 输入指令: $ sass –watch 源文件名称:生成的文件名称
          $ sass –watch xxx.scss:xxx.css
+ 缺点: 一个命令行只能监控一个文件实时编译


3. 文件夹实时编译 :

  + 打开命令行, 切换目录到你要 编译 的 sass 文件夹 所在的 目录

  + 输入指令: $  sass –watch  要编译的源文件夹名称:生成后的文件夹名称 


3. sass 语法

1. sass 的 注释

在 sass 中注释分成三种 :

// 1. 单行注释
// 注释一行代码
// 特点 : 在编译的时候不会保留
div {// 这个是设置 div 的宽度width: 100px;// 这个是 弹性盒子display: flex;
}
/*2. 多行注释+ 可以注释多行代码+ 特点 : 在编译的时候会保留在打包的时候, 不会保留
*/
/*!3. 强力注释+ 可以注释多行代码+ 和多行注释是一个道理+ 在编译的时候会保留+ 在打包的时候, 也会保留
*/
/*!@author@date...
*/

2. sass 的 变量

+ 在 sass 内可以 定义变量

+ 来存储一些值

变量的定义 :

=> 语法: $名字: 值;

=> 注意:

  -> $ 是名字的一部分 , 不是关键字

  -> 没有等于号, 而是 冒号 ( : )

  -> 值不管是什么, 不需要引号

=> 定义的变量是不会被解析出来的

  -> 只有你使用这个变量的时候

  -> 会直接把值解析出来

// 0.定义变量
$bg_color: skyblue;
$b: 1px solid #333;
$n: 10;

变量的使用 :

=> 在值的位置使用 :

  -> 直接使用变量就可以了

  -> 记得 $ 是名字的一部分

SASS _ 入门版-编程知识网

=> 在选择器的位置使用 :

  + li:nth-child(变量)

  + div.变量 { }

  -> 不能直接使用

  + 在变量的外面包裹一个 井号大括号

  -> 需要使用变量, 需要写  #{ 变量 } 

  +  li:nth-child(#{ 变量 }) 

  +  div.#{ 变量 } 

  => 表示这里是一个变量

SASS _ 入门版-编程知识网


3. sass 的 循环

循环1: @for from to 循环

  + 语法: @for 变量 from 开始数字 to 结束数字 { 内容 }

  + 变量就表示 从 开始数字 循环到 结束数字 的每一个内容

  + 注意: 包含开始数字, 不包含结束数字

SASS _ 入门版-编程知识网


 循环2: @for from through 循环

  + 语法: @for 变量 from 开始数字 through 结束数字 { 内容 }

  + 变量就表示 从 开始数字 循环到 结束数字 的每一个内容

  + 注意: 包含开始数字, 也包含结束数字

SASS _ 入门版-编程知识网

循环3: @each 循环

+ 主要作用是用来遍历数组的

  + sass 如何定义一个数组

    => 语法: $变量: 值1, 值2, 值3, …;

  + 循环语法: @each 变量 in 数组 { }

  + 变量就表示数组中的每一个值

SASS _ 入门版-编程知识网


4. sass 的 嵌套

+ 可以把 css 写的像 html 一样有层级结构

+ 让你和 html 结构一样的书写 css

1. 后代嵌套

  + 直接在一个规则集内书写后代规则集就可以了

  + 可以直接嵌套选择器, 也可以嵌套 后代选择器

SASS _ 入门版-编程知识网

2. 子代嵌套

+ 在一个规则集内书写第二个规则集的时候书写一个  

SASS _ 入门版-编程知识网

 3. 连接符嵌套

  + 一般用在 伪类和伪元素 选择器的时候

  + 需要在样式集内书写伪类或者伪元素嵌套的时候

  => 书写一个  连接符

SASS _ 入门版-编程知识网

SASS _ 入门版-编程知识网

 4. 属性嵌套

+ 必须要可以嵌套的属性才能使用这个语法
+ 可以嵌套的属性: 
=> 属性名中带有中划线  –  的样式
  => margin-left
  => padding-top
  => background-color
+ 语法:
=> 书写完毕属性值, 直接书写 { } 去写单独的内容
+ 嵌套方式
  => background: {
    color: red;
    position: 100px 100px;
    …
  };
  + 扩展:
  => 有一个中划线, 就可以嵌套一次

SASS _ 入门版-编程知识网

认识 border 复合了哪几个属性
border-top
border-right
border-left
border-bottom

以 border-top 为例, 复合了哪几个属性
border-top-color
border-top-width
border-top-style
SASS _ 入门版-编程知识网

SASS _ 入门版-编程知识网  


5. sass 的 混入 mixin 

+ 混入也叫作混合器, 在其他语言里也叫作 "函数"

+ 定义混合器 和 使用混合器

1. 基本混合器的定义和使用
+ 定义: 
=> 语法 : @mixin 混合器名称 { 混合器样式 }
=> 注意: 混合器在不使用的时候, 不会被编译, 使用的时候, 直接编译 { } 内的代码
+ 使用: 
=> 语法: @include 混合器名称;
=> 会把混合器内的代码直接使用
+ 缺点: 
  => 不够灵活, 定义都是准确的几个属性
  => 全部使用位置都是一模一样的
  => 不能进行差异化定制

SASS _ 入门版-编程知识网

 2. 定义带有参数的混合器
+ 语法: @mixin 混合器名称(变量1, 变量2, …) { }
  => 定义带有参数的混合器, 在 {} 内可以直接使用变量
+ 使用:
  => @include 混合器名称(值1, 值2, …);
  => 注意: 必须所有参数都传递, 你写了多少个形参, 就得写多少个实参
+ 缺点:
  => 每次使用都必须要完全传递参数

SASS _ 入门版-编程知识网


3. 定义带有参数默认值的混合器

+ 定义:

=> 语法: @mixin 混合器名称(变量1:默认值, 变量2:默认值, …) { }

=> 我们的参数是带有默认值的

=> 当你不传递内容的时候, 会使用默认值

+ 使用:

=> 方式1: @include 混合器名称(实参1, 实参2);

按照顺序传递或者不传递参数,可以不全部填写, 没有写的会有默认值使用

=> 方式2: @include 混合器名称(变量1: 值);

指定给某一个形参赋值, 剩下的使用默认值

SASS _ 入门版-编程知识网


6. sass 的 继承 

+ 让一个规则集使用另一个规则集的样式内容

+ 语法:  @extend  另一个规则集的选择器;

SASS _ 入门版-编程知识网


7. sass 的 导入

+ 把另一个 scss 文件导入到自己文件内使用

+ 一般来说, 最基础的模块要分开两个导入

  1. base.scss 文件

  2. variable.scss 文件 , 变量文件

  3. mixin.scss 文件 , 混合器文件

+ 语法 : @import "scss 文件地址";

  => 导入以后, 就可以使用该文件内的内容

SASS _ 入门版-编程知识网


4. SASS 简图 :

SASS _ 入门版-编程知识网