flex布局是极其简单的一种布局,一般只需要给父元素display属性赋值“flex”,即可实现flex布局。(此时float、clear、vertical-align属性均失效),其子元素不论是什么盒子均具有高度和宽度。
主轴和侧轴
在 flex 布局中,是分为主轴和侧轴两个方向的,同样的叫法有: 行和列、x轴和y轴
- 默认主轴方向为x轴方向,水平向右
- 默认侧轴方向为y轴方向,垂直向下
常见父项属性
- flex-direction : 设置主轴的方向
属性值 | 说明 |
---|---|
row | 默认值从左到右 |
row-reverse | 从右到左 |
column | 从上到下 |
column-reverse | 从下到上 |
- justify-content : 设置主轴上子元素的排列方式
属性值 | 说明 |
---|---|
flex-start | 默认值从头部排列 |
flex-end | 从尾部排列 |
center | 在主轴居中对齐 |
space-around | 平分剩余空间 |
space-between | 先两边贴边,再平分剩余空间 |
- flex-wrap : 设置子元素是否换行
属性值 | 说明 |
---|---|
nowrap | 默认值不换行(装不下时会自动缩减子盒子大小) |
flex-end | 换行 |
- align-content : 设置侧轴上的子元素的排列方式(多行)
属性值 | 说明 |
---|---|
flex-start | 默认值从头部排列 |
flex-end | 从尾部排列 |
center | 在侧轴居中对齐 |
space-around | 平分剩余空间 |
space-between | 先两边贴边,再平分剩余空间 |
stretch | 子元素长度平分侧轴父元素长度(子元素不要给侧轴对应长度) |
- align-items : 设置侧轴上的子元素的排列方式(单行)
属性值 | 说明 |
---|---|
flex-start | 默认值从头部排列 |
flex-end | 从尾部排列 |
center | 在侧轴居中对齐 |
stretch | 将子元素拉伸到侧轴长度(子元素不要给侧轴对应长度) |
flex-flow : 复合属性,相当同时设置了 flex-direction 和 flex-wrap
flex-flow : flex-direction属性值 flex-wrap属性值;
常见子项属性
flex : 控制子项所占剩余空间的份数
1
flex:<number>; //默认值为0
order : 控制顺序,数值越小越靠前
flex-self : 控制单行子项自己在侧轴的排列方式,属性值与align-items相同