flex弹性盒子
- 操作方便,布局极为简单,移动端应用很广泛
- PC 端浏览器支持情况较差
- IE 11或更低版本,不支持或仅部分支持
- PC端页面布局,建议还是传统布局;如果不考虑兼容性问题的PC端页面布局,还是使用flex弹性布局
注意:当我父盒子设为 flex 布局以后,子元素的 float、clear 和 vertical-align 属性将失效
原理
- 通过给父盒子添加flex属性,来控制子盒子的位置和排列方式
属性
-
flex-direction:设置主轴的方向,即子元素的排列方向
-
justify-content:设置主轴上的子元素排列方式
-
flex-wrap:设置子元素是否换行,flex布局中默认是不换行的
-
align-items:设置侧轴上的子元素排列方式(单行)
-
align-content:设置侧轴上的子元素的排列方式(多行)
-
flex-flow:复合属性,相当于同时设置了 flex-direction 和 flex-wrap
- flex-flow:row wrap;
子项属性
flex 属性
- flex 属性定义子项目分配剩余空间,用flex来表示占多少份数
align-self 属性
- align-self 控制子项自己在侧轴上的排列方式
- 允许单个项目有与其他项目不一样的对齐方式,可覆盖 align-items 属性。
- 默认值为 auto,表示继承父元素的 align-items 属性,如果没有父元素,则等同于 stretch
div {
display: flex;
width: 80%;
height: 300px;
background-color: pink;
/* 让三个子盒子沿着侧轴底侧对齐 */
align-items: flex-end;
}
- 只让3号盒子下来底侧
div span:nth-child(3) {
align-self: flex-end;
}
order属性
- 定义项目的排列顺序
- 数值越小,排列越靠前,默认为0
div span:nth-child(2) {
/* 默认是0 -1比0小所以在前面 */
order: -1;
}