CSS样式
Flex布局
Flex布局基于Flexible Box模型,通常被称为flexbox,是一种一维的布局模型。对于Flex布局,我们主要需要掌握几个概念:
- flexbox的两根轴线:其中,主轴由
flex-direction
定义,交叉轴则垂直于主轴。 - 起始和终止:传统布局的文档流是从左到右、从上到下的布局方式。而在flexbox中,我们使用起始和终止来描述布局方向和顺序。
- Flex容器:采用了flexbox的区域(
display
属性值为flex
或者inline-flex
)叫做flex容器,容器中的直系子元素就会变为flex元素。通过flex-direction
/flex-wrap
/flex
等各种属性设置,我们可以方便地设置容器内元素的布局效果。
使用Flex布局可以:
- 通过
flex-direction
调整Flex元素的排列方向(主轴的方向) - 用
flex-wrap
实现多行Flex容器如何换行 - 使用
justify-content
调整Flex元素在主轴上的对齐方式 - 使用
align-items
调整Flex元素在交叉轴上如何对齐 - 使用
align-content
调整多根轴线的对齐方式
元素定位——position
-
sticky
:生成滚动位置的定位,粘性元素相对于relative
和固定fixed
之间切换 ,元素的位置通过left
/top
/right
/bottom
属性进行规定,达到粘性定位起作用。 -
static
(默认值):没有定位,元素出现在正常的流中(忽略top
/bottom
/left
/right
或者z-index
声明) -
inherit
:规定应该从父元素继承position
属性的值 -
relative
:生成相对定位的元素,相对于其正常位置进行定位,relative
特点包括:relative
元素保持原有文档流,但相对本身的原始位置发生位移,且占空间relative
元素也遵循从上到下,从左到右的排版布局- 相对于其正常位置进行定位,在这里设置了
relative
的元素相对其原本位置(position: static
)进行位移 relative
元素占有原本位置,因此下一个元素会排到该元素后方relative
元素占位不会随着定位的改变而改变,也就是说relative
在文档流中占有的位置与其原本位置(position: static
)相同
-
absolute
:生成绝对定位的元素,相对于static
定位以外的第一个父元素进行定位。元素的位置通过left
/top
/right
/bottom
属性进行规定。absolute
特点包括:absolute
元素脱离文档流absolute
元素不占位,因此下一个符合普通流的元素会略过absolute
元素排到其上一个元素的后方absolute
元素的定位是相对于static
定位以外的第一个父元素进行定位
-
fixed
:生成绝对定位的元素,相对于浏览器窗口进行定位。元素的位置通过left
/top
/right
/bottom
属性进行规定。fixed
的特点:fixed
元素脱离文档流fixed
元素不占位fixed
相对于浏览器窗口来定位,不管是否有static
定位以外的父元素absolute
元素会随着页面的滚动而滚动,而fixed
不会
元素堆叠
元素的堆叠方式和顺序,除了与position
定位有关,也与z-index
有关,有关z-index
的说明:
- 当同级元素不设置
z-index
或者z-index
相等时,后面的元素会叠在前面的元素上方 - 当同级元素
z-index
不同时,z-index
大的元素会叠在z-index
小的元素上方
除了同级元素以外,z-index
值的设置效果还会受到父元素的z-index
值的影响,它只决定同一父元素中的同级子元素的堆叠顺序,在此之外的场景会比较复杂,大家可以自己去实践下,篇幅关系我们不再这里拓展了。
z-index
样式属性比较常用于多个元素层级控制的时候,比如弹窗一般需要在最上层,就可以通过设置较大的z-index
值来控制。