这是我参与「第五届青训营 」伴学笔记创作活动的第 3 天
选择器的特异度
- 特异度越高,优先级越高
| # | . | E |
|---|---|---|
| id | (伪)类 | 标签 |
继承
- 某些属性会自动继承其父元素的计算值,除非显示指定一个值
- 一般关于文字的属性都可继承,盒模型的一般不可继承
<p>This is a <em>test</em>of<strong>inherit</strong></p>
<style>
body {
font-size: 20px;
}
p {
color: blue;
}
em {
color: red;
}
</style>
显式继承inherit
-
把不可继承的变为可继承的
-
盒模型为例
- border-box
- content-box
-
初始值
- background-color: transparent;
- margin-left: 0;
显式重置初始值initial
- background-color: initial;
C SS求值
布局
布局方式
-
常规流
- 行、块级
- 表格布局
- Flex Box
- Grid布局
-
浮动
-
绝对定位
盒模型
-
width、height
- 取值为长度、百分数(容器有指定宽/高度时才生效)、auto
padding(内边距)
- 指定元素四个方向的内边距
- 百分数相对于容器宽度
border(边框)
- 指定容器边框样式、粗细和颜色
- 三属性(width、style、color)
- 四方向(top、right、bottom、left)
margin(外边距)
- 指定元素四个方向的外边距
- 取值为长度、auto、百分数
- 百分数相对于容器宽度
使用margin : auto水平居中
margin-left:auto;
margin-right:auto;
margin collapse
- 在垂直方向上边距合并,取较大值
box-sizing : content-box
box-sizing : border-box
overflow
-
文本超出盒子
- visible:显示到盒外
- hidden:隐藏
- scroll:盒内可滚动
- auto:能在盒内显示则显示,不够显示则滚动
块级和行级
| 块级 | 行级 | |
|---|---|---|
| 不和其他盒子并列摆放 | 和其他行级盒子一起放在一行或拆开成多行 | |
| 盒模型性质 | 适用 | width、height不适用 |
| 块级元素 | 行级元素 |
|---|---|
| 生成块级盒子 | 生成行级元素;内容分散在多个行盒中 |
| body、article、div等 | span、em、strong、cite、code等 |
| display : block | display : inline |
display属性
- block : 块级盒子
- inline : 行级盒子
- inline-block : 本身是行级,可以放在行盒中;可以设置宽高;作为一个整体不会被拆散成多行
- none : 排版时完全被忽略
常规流布局
- 根元素、浮动和绝对定位的元素会脱离常规流
- 其他元素都在常规之内(in-flow)
- 常规流中的盒子,在某种排版上下文中参与布局
行级排版上下文IFC
-
只包含行级盒子的容器会创建一个IFC
-
IFC内排版规则
- 盒子在一行内水平摆放
- 一行放不下时,换行显示
- text-align决定一行内盒子的水平对齐
- vertical-align决定一个盒子在行内的垂直对齐
- 避开浮动(float)元素
块级排版上下文BFC
-
某些容器会创建一个BFC
- 根元素
- 浮动、绝对定位、inline-block
- Flex子项和Grid子项
- overflow值不是visible的块盒
- display : flow-root;
-
BFC内的排版规则
- 盒子从上到下摆放
- 垂直margin合并
- BFC内盒子的margin不会与外面的合并
- BFC不会和浮动元素重叠
Flex排版上下文 display : flex
-
可以控制子级盒子的:
- 摆放流向(左右还是上下)
- 摆放顺序
- 盒子宽高
- 水平垂直方向的对齐
- 是否允许折行
justify-content 主轴(左右)
align-items 侧轴(上下)
Flexibility
- 可以设置子项的弹性:当容器有剩余空间的时候,会伸展(flex-grow);容器空间不够时,会收缩(flex-shrink)。flex-basis:没有伸展或收缩时的基础长度。
- flex : ? ? ?px (grow shrink basis)
- flex : auto = 1 1 auto
- flex : none = 0 0 auto
Grid排版上下文 display : gird
- display : gird使元素生成一个块级的Grid容器
- 使用grid-template相关属性将容器划分为网格
- 设置每一个子项占哪些行/列
grid area 网格区域
float浮动
- 实现文字环绕效果
绝对定位布局
position属性
-
static : 默认值,非定位元素
-
relative : 相对自身原本位置偏移,不脱离文档流
- 在常规流里面布局
- 相对于自己本应该在的位置进行偏移
- 使用top、left、bottom、right设置偏移长度
- 流内其他元素当它没有偏移一样布局
-
absolute : 绝对定位,相对非static祖先元素定位
- 脱离常规流
- 相对于最近的 非static祖先 定位
- 不会对流内元素布局造成影响
-
fixed : 相对于视口绝对定位
个人总结
-
把选择器特异度顺序记清,方便判断特异度大小
-
了解盒模型的基本概念
-
理解三种布局方式、四种常规流布局方式