# flex 布局

目前最新版本的 flex 布局的属性对各大 web 浏览器的支持已经很全面,但是由于移动端浏览器版本多,内核复杂,所以移动端还需要老版本的 flex 布局支持以解决兼容性问题,不同浏览器内核加前缀-moz-,-webkit-,-o-

# 1. 老版本 flex(display: box)

# 1. 容器的布局方向 box-orient

此属性是用来确定主轴是哪个,不可继承

作用
horizontal 以水平方向作为主轴
vertical 以垂直方向作为主轴
inline-axis 以水平方向作为主轴
block-axis 以垂直方向作为主轴

# 2. 容器的排列方向 box-direction

此属性用来确定主轴方向,默认值 normal,不可继承

作用
normal 主轴的左方向(左边或者上边)
reverse 主轴的右方向(右边或者下边)

# 3. 富裕空间的管理(主轴)box-pack

此属性指定主轴方向富裕空间的位置,默认值是 start

作用
start 富裕空间在主轴右边方向
end 富裕空间在主轴左边方向
center 富裕空间在主轴两边方向
justify 富裕空间在项目两侧

# 4. 富裕空间的管理(侧轴)box-align

此属性指定侧轴方向富裕空间的位置,默认值为 start

作用
start 富裕空间在侧轴左边方向
end 富裕空间在侧轴右边方向
center 富裕空间在侧轴中间

# 2. 新版本 flex(display: flex)

# 1.容器的布局和排列方向 flex-direction

此属性是指定内部元素是如何排列的,默认值为 row,不可继承

作用
row 以水平向右为主轴,项目在左边排列
row-reverse 以水平向左为主轴,项目在右边排列
column 以垂直向下为主轴,项目在上边排列
column-reverse 以垂直向上为主轴,项目在下边排列

# 2. 富裕空间的管理(主轴)justify-content

此属性指定主轴方向富裕空间的位置,默认值为 flex-start,不可继承

作用
flex-start 主轴的正方向
flex-end 主轴的反方向
center 富裕空间在两边
space-between 富裕空间在项目之间
space-around(box 没有的) 富裕空间在项目两边

# 3. 富裕空间管理(侧轴)align-items

此属性指定侧轴方向富裕空间的位置,默认值为 flex-start,不可继承

作用
flex-start 侧轴的正方向
flex-end 侧轴的反方向
center 富裕空间在两边
baseline(box 没有的) 所有元素向基线对齐
stretch(box 没有的) 等高布局

# 4. 新版本 flex 新增属性

# 1.flex-wrap

此属性指定 flex 元素是单行显示还是多行显示,默认值 nowrap,不可继承

作用
wrap flex 元素会被打断到多行
nowrap flex 被摆放到一行,可能会导致溢出
wrap-reverse wrap 的反向操作
# 2. flex-flow

此属性是 flex-direction 和 flex-wrap 的简写

# 3. order

指定特定 flex 元素的排列顺序

# 4. align-self

指定特定 flex 元素侧轴方向的位置

# 5. flex-shrink

指定了 flex 元素的收缩规则,值为<number>

# 6. flex-grow

指定 flex 元素所占总宽/高度的份额,值为<number>

# 7. flex-basis

指定 flex 元素基础宽/高度

# 8. -webkit-box-flex

使 flex 元素充满整个主轴宽/高,值大于 0,一般为 1