Flex 是 Flexible Box 的缩写,意为"弹性布局",用来为盒状模型提供最大的灵活性。布局
任何一个容器均可以指定为 Flex 布局。flex
使用 flex 布局首先要设置父容器 display: flex
,而后再设置 justify-content: center
实现水平居中,最后设置 align-items: center
实现垂直居中(须要在肯定height下才能实现)。spa
#dad { height:300px; display: flex; justify-content: center; align-items: center }
justify-content
和 align-items
是啥?哪里能够看出横向、竖向的语义?是的,flex 的确没有那么简单,这就要从两个基本概念提及了。code
flex 的核心的概念就是 容器 和 轴。容器包括外层的 父容器 和内层的 子容器,轴包括 主轴 和 交叉轴,能够说 flex 布局的所有特性都构建在这两个概念上。blog
baseline
默认是指首行文字,即 first baseline
,全部子容器向基线对齐,交叉轴起点到元素基线距离最大的子容器将会与交叉轴起始端相切以肯定基线。
子容器是有弹性的(flex 即弹性),它们会自动填充剩余空间,子容器的伸缩比例由 flex
属性肯定。it
flex
的值能够是无单位数字(如:1, 2, 3),也能够是有单位数字(如:15px,30px,60px),还能够是 none
关键字。子容器会按照 flex
定义的尺寸比例自动伸缩,若是取值为none
则不伸缩。io
虽然 flex
是多个属性的缩写,容许 1 - 3 个值连用,但一般用 1 个值就能够知足需求,它的所有写法可参考下图。class
justify-content
属性决定子容器沿主轴(水平方向)的排列方式,align-items
属性决定子容器沿着交叉轴(垂直方向)的排列方式从左到右:flex-direction: row容器
设置换行方式:flex-wrap扩展
决定子容器是否换行排列,不但能够顺序换行并且支持逆序换行。
多行沿交叉轴对齐:align-content
当子容器多行排列时,设置行与行之间的对齐方式。
设置基准大小:flex-basis
flex-basis
表示在不伸缩的状况下子容器的原始尺寸。主轴为横向时表明宽度,主轴为纵向时表明高度。
设置扩展比例:flex-grow
子容器弹性伸展的比例。如图,剩余空间按 1:2 的比例分配给子容器。
设置排列顺序:order
改变子容器的排列顺序,覆盖 HTML 代码中的顺序,默认值为 0,能够为负值,数值越小排列越靠前。