弹性布局
1.声明定义
容器盒子里面包含着容器元素,使用***声明为弹性盒子
display:flex
display:inline-flex
2.控制盒子元素排列的方向
flex-direction
值 | 描述 |
---|
row | 从左到右水平排列元素(默认值) |
row-reverse | 从右向左排列元素 |
column | 从上到下垂直排列元素 |
column-reverse | 从下到上垂直排列元素 |
3.规定flex容器是单行或者多行,同时横轴的方向决定了新行堆叠的方向。
flex-wrap: wrap;
选项 | 说明 |
---|
nowrap | 元素不拆行或不拆列(默认值) |
wrap | 容器元素在必要的时候拆行或拆列。 |
wrap-reverse | 容器元素在必要的时候拆行或拆列,但是以相反的顺序 |
4.控制元素在主轴上的排列方式
justify-content: flex-end;
选项 | 说明 |
---|
flex-start | 元素紧靠主轴起点 |
flex-end | 元素紧靠主轴终点 |
center | 元素从弹性容器中心开始 |
space-between | 第一个元素靠起点,最后一个元素靠终点,余下元素平均分配空间 |
space-around | 每个元素两侧的间隔相等。所以,项目之间的间隔比项目与边框的间隔大一倍 |
space-evenly | 元素间距离平均分配 |
5.控制容器元素在交叉轴上的排列方式
align-items: stretch;
选项 | 说明 |
---|
stretch | 元素被拉伸以适应容器(默认值) |
center | 元素位于容器的中心 |
flex-start | 元素位于容器的交叉轴开头 |
flex-end | 元素位于容器的交叉轴结尾 |
6.适用于多行显示的弹性容器,它的作用是当flex容器在交叉轴上有多余的空间时,对元素的对齐处理
align-content: center;
选项 | 说明 |
---|
stretch | 将空间平均分配给元素 |
flex-start | 元素紧靠主轴起点 |
flex-end | 元素紧靠主轴终点 |
center | 元素从弹性容器中心开始 |
space-between | 第一个元素靠起点,最后一个元素靠终点,余下元素平均分配空间 |
space-around | 每个元素两侧的间隔相等。所以,项目之间的间隔比项目与边框的间隔大一倍 |
space-evenly | 元素间距离平均分配 |
7.用于控制单个元素在交叉轴上的排列方式,align-items 用于控制容器中所有元素的排列,而 align-self 用于控制一个弹性元素的交叉轴排列
div div:nth-of-type(1) {
align-self: flex-start;
}
选项 | 说明 |
---|
stretch | 将空间平均分配给元素 |
flex-start | 元素紧靠主轴起点 |
flex-end | 元素紧靠主轴终点 |
center | 元素从弹性容器中心开始 |
8.弹性盒子的可用空间,分配给弹性元素
flex-grow: 1;
9.弹性盒子装不下元素时定义的缩小值
div div:nth-child(1) {
flex-shrink: 0;
}
div div:nth-child(2) {
flex-shrink: 1;
}
10.在分配多余空间之前,项目占据的主轴空间(main size)。浏览器根据这个属性,计算主轴是否有多余空间。
flex-basis: 100px;
11.用于控制弹性元素的位置,默认为 order:0 数值越小越在前面,可以负数或整数。
order: 1;
简写模式:(flex-flow 是 flex-direction 与 flex-wrap 的组合简写模式。)
flex-flow: row-reverse wrap-reverse;
简写模式:(flex是flex-grow、flex-shrink 、flex-basis缩写组合)
flex: 1 0 100px;