SCSS 学习笔记

2021/11/25 SCSS

# Sass 变量

变量用于存储一些信息,它可以重复使用。

Sass 变量可以存储以下信息:

  • 字符串
  • 数字
  • 颜色值
  • 布尔值
  • 列表
  • null 值

Sass 变量使用 $ 符号:

$bgcolor: lightblue;
$textcolor: darkblue;
$fontsize: 18px;
1
2
3

就可以多次使用:

body {
	background-color: $bgcolor;
  	color: $textcolor;
  	font-size: $fontsize;
}
1
2
3
4
5

# Sass 作用域

Sass 变量的作用域只能在当前的层级上有效果

$myColor: red;

h1 {
  $myColor: green;   // 只在 h1 里头有用,局部作用域
  color: $myColor;
}

p {
  color: $myColor;
}
1
2
3
4
5
6
7
8
9
10

# !global

使用 !global 关键词来设置变量是全局的:

$myColor: red;

h1 {
  $myColor: green !global;  // 全局作用域
  color: $myColor;
}

p {
  color: $myColor;
}
1
2
3
4
5
6
7
8
9
10

# Sass 嵌套规则与属性

Sass 嵌套 CSS 选择器类似于 HTML 的嵌套规则

nav {
  ul {
    margin: 0;
    padding: 0;
    list-style: none;
  }
  li {
    display: inline-block;
  }
  a {
    display: block;
    padding: 6px 12px;
    text-decoration: none;
  }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

# Sass 嵌套属性

font: {
  family: Helvetica, sans-serif;
  size: 18px;
  weight: bold;
}

text: {
  align: center;
  transform: lowercase;
  overflow: hidden;
}
1
2
3
4
5
6
7
8
9
10
11

# Sass @import

Sass 可以帮助我们减少 CSS 重复的代码,节省开发时间。

创建一个 reset.scss 文件:

html,
body,
ul,
ol {
  margin: 0;
  padding: 0;
}
1
2
3
4
5
6
7

在另一个css里面使用导入(包含文件时不需要指定文件后缀,Sass 会自动添加后缀 .scss)

@import "reset";

body {
  font-family: Helvetica, sans-serif;
  font-size: 18px;
  color: red;
}
1
2
3
4
5
6
7

# Sass @mixin 与 @include

  • @mixin 指令可以定义一个可以在整个样式表中重复使用的样式。

  • @include 指令可以将混入(mixin)引入到文档中。

创建混入

@mixin important-text {
  color: red;
  font-size: 25px;
  font-weight: bold;
  border: 1px solid blue;
}
1
2
3
4
5
6

使用混入

.danger {
  @include important-text;
  background-color: green;
}
1
2
3
4

混入中也可以包含混入,如下所示:

@mixin special-text {
  @include important-text;
  @include link;
  @include special-border;
}
1
2
3
4
5

# 向混入传递变量

混入可以接收参数。

定义可以接收参数的混入:

/* 混入接收两个参数 */
@mixin bordered($color, $width) {
  border: $width solid $color;
}

.myArticle {
  @include bordered(blue, 1px);  // 调用混入,并传递两个参数
}

.myNotes {
  @include bordered(red, 2px); // 调用混入,并传递两个参数
}
1
2
3
4
5
6
7
8
9
10
11
12

可变参数:

@mixin box-shadow($shadows...) {
      -moz-box-shadow: $shadows;
      -webkit-box-shadow: $shadows;
      box-shadow: $shadows;
}

.shadows {
  @include box-shadow(0px 4px 5px #666, 2px 6px 10px #999);
}
1
2
3
4
5
6
7
8
9
Last Updated: 2021/12/19上午12:27:30