## qualified rule 主要由选择器和声明区块构成。声明区块又由属性和值构成。
![](https://img.kancloud.cn/26/9c/269ce6b81e4f1d9e3f326f17dfa43c55_533x230.png)
* [ ] **选择器**
![](https://img.kancloud.cn/ed/12/ed120ddb7050a054b2042496c093212b_960x562.png)
![](https://img.kancloud.cn/00/6b/006b6b6ccfd08d53c5b7f567944427c7_410x404.png)
> 从语法结构可以看出任何选择器都是由几个符号结构连接的:空格、大于号、加号、波浪线、双竖线(这里需要注意一下,空格,即为后代选择器的优先级较低)。
> 然后对每一个选择器来说,如果它不是伪元素的话,由几个可选的部分组成:标签类型、id、class、属性和伪类,它们中只要出现一个,就构成了选择器
> 如果它是伪元素,则在这个结构之后追加伪元素。只有伪类可以出现在伪元素之后。
---
* [ ] **声明:属性和值**
> 声明部分是由「属性:值」组成的序列
1. 属性
是中划线、下划线、字母等组成的标识符,CSS 还支持反斜杠转义。
需要注意的是:属性不允许使用连续的两个中划线开头,这样的属性会被认为是 CSS 变量
在 CSS Variables 标准中,以双中划线开头的属性被当做变量,与之配合的则是 var 函数:
```css
:root{
--main-color: #000;
--accent-color: #fff;
}
.content{
color: var(--main-color);
}
```
2. 值
- CSS 范围的关键字:initial, unset, inherit, 任何属性都可以的关键字
- 字符串
- URL:使用 url() 函数的 URL 值
- 整数/实数:比如 flex 的属性值
- 维度:单位的整数/实数,比如 width 属性的值
- 百分比:大部分维度都支持
- 颜色:比如 background-color 的属性值
- 图片:比如 background-image 的属性值
- 2D位置:比如 background-position 的属性值
- 函数:来自函数的值,比如 transform 的属性值
---
CSS 支持一批特定的计算型函数:
- **calc()**:表达式计算,支持加减乘除四则运算。在针对维度进行计算时,calc() 函数允许不同单位混合运算,这非常的有用。
```css
.item-view{
width: calc(100vw - 80rpx - 5px)
}
// 注意:calc 函数内运算符前后需要空格隔开,否则无效
```
- max():表示取两个数中较大的一个
- min():表示取两个数中较小的一个
- clamp():给定一个范围,超出范围外则使用范围的最大或者最小值
- toggle():在规则选中多于一个元素时生效,它会在几个值之间来回切换
```css
ul { list-style-type: toggle(circle, square); }
// 让一个列表项的样式圆点和方点间隔出现
```
- attr():允许 CSS 接受属性值的控制
- CSS 的函数还有很多,这里就不一一写出来了,直接贴一张网友的图吧
![](https://img.kancloud.cn/3c/3e/3c3ea245434a961f85441ebbffd3087e_509x586.png)
![](https://img.kancloud.cn/2d/f2/2df259ae24f7c4a101a3ac78b2560320_457x498.png)
![](https://img.kancloud.cn/01/fb/01fb71dfcfc98d36bc461693721845b8_444x745.png)
![](https://img.kancloud.cn/49/21/4921de8d43036d01dd68d3c5ab7b5dcf_384x166.png)