FlexBox不只在前端中应用普遍,同时在移动端也占有很是重要的地位,好比 iOS 中的UIStackView,Facebook 的 Yoga 库;微信小程序和 RN 都支持这种布局方式。各大浏览器对 FlexBox 支持比较完善,尤为对于移 Web,iOS 和 Android 在很早的版本中就支持了这种布局。全部我建议不管是移动端,仍是泛前端的同窗都应该学习一下这种布局方式。 前端
须要解释几个概念:
flex-container:布局容器,使用 display:flex 的标签;
flex-item: 容器中的直接子元素;
main-axis:主轴,布局方向为 row 或者 row-reverse 时它是水平方向。布局方向为 column 或者 column-reverse 时它是垂直方向。
cross-axis: 纵轴,与主轴垂直的轴;
main-start: 主轴的起点,布局方向为 row 时它的起点在左侧,row-reverse 为右侧。布局方向为 column 时起点在顶部,column-reverse 时起点为底部。
main-end: 主轴结束的点,与 main-start 相反;
cross-start: 纵轴的起点;
cross-end:纵轴的结束点,与 cross-start 相反
复制代码
row(默认):从水平方向的左侧开始布局;
row-reverse:从水平方向的右侧开始布局;
column:从垂直方向的顶部开始布局;
column-reverse: 从垂直方向的底部开始布局;
复制代码
决定了 flex items 在 main axis(主轴)上的对齐方式,主轴不必定是水平方向,不能把 justify-content 看作是控制水平方向的对齐方式。它主要有如下几个值:小程序
flex-start(默认):与主轴的起始位置(main start)对齐;
flex-end:与主轴的结束位置(main end)对齐;
center:居中于主轴;
space-around: 每一个 item 的间距相等, flex item 之间的距离相等, flex item 与main start 和 main end之间的距离是flex items 之间距离的一半;
space-evenly: 每一个 item 的间距相等, flex item 之间的距离相等, flex item 与main start 和 main end之间的距离等于flex items 之间的距离;
space-between: 左右无边距, flex item 之间的距离相等,左右两边与 main start 和 main end 对齐;
复制代码
flex-start:与纵轴的起始位置(cross start)对齐;
flex-end:与纵轴的结束位置(cross end)对齐;
center:居中与纵轴;
baseline:与基准线对齐;
stretch(默认):当flex items在cross axis方向上的size为auto时,会自动拉伸填充至flex container
复制代码
决定了flex container是多行仍是单行微信小程序
nowrap(默认):单行显示;
wrap:多行显示;
wrap-reverse:多行显示;
复制代码
它是 flex-direction 和 flex-wrap 的简写,浏览器
好比 flex-flow: row nowrap 等价于
flex-direction : row
flex-wrap : nowrap。
复制代码
决定了多行flex item 在 cross axie 方向上的对齐方式,用法和 justify-content 类似bash
strech(默认值):与align-items的 strech相似
fles-start: 与cross start 对齐
fles-end: 与cross end 对齐
center: 居中对齐
space-around: 每一个 item 的间距相等, flex item 之间的距离相等, flex item 与cross start 和 cross end之间的距离是flex items 之间距离的一半;
space-evenly: 每一个 item 的间距相等, flex item 之间的距离相等, flex item 与cross start 和 cross end之间的距离等于flex items 之间的距离;
space-between: 左右无边距, flex item 之间的距离相等,左右两边与 cross start 和 cross end 对齐;
复制代码
决定了 flex items的排布顺序微信
flex items 能够经过 align-self 覆盖 flex container设置的 align-items布局
auto(默认值): 遵循flex container的align-items设置
strech flex-start flex-end center baseline 效果跟align-items一致
复制代码
决定了flex items 如何扩展,它的做用就是,当全部的 item 未占满容器的宽度时,item 该如何扩充本身以填满容器的剩余空间。理解这个属性前关键要理解剩余空间,在 flex 容器中,若是全部 item 的宽度和小于容器的宽度,那么容器的剩余空间等于容器宽度减去全部item宽度的和。学习
用来设置 flex items 在 main axis方向上的base sizeflex
auto (默认):content取决于自己内容的size
决定flex items最终base size因素优先级由高到低
max-width\max-height\min-width\min-height
flex-basis
width\height
复制代码