2009年,W3C提出了一种新的布局方案—-Flex 布局,可以简便、完整、响应式地实现各种页面布局。 目前,它已经得到了所有浏览器的支持,这意味着,现在就能很安全地使用这项功能。

  一,怎么运用FLEX布局
flex布局非常灵活,任一容器都可以指定为flex布局。块状只需要display属性规定为flex即可。 行内元素也可以指定为flex布局,将display属性设置为inline-flex。 还有WebKit内核的浏览器需要加上-webkit前缀。 需要注意的是设置成为flex布局之后,子元素的float,clear,text-align,vertical-align就会失效。

 二,基本概念
采用flex布局的元素就被称为flex容器(flex contain),它的所有子元素称为flex项目(flex item)。 容器默认存在两根轴线,一根主轴(main axis)一根交叉轴(cross axis)。 项目默认沿主轴排列,单个项目占据的主轴空间叫main size,占据的交叉轴空间叫cross size.

  三. FLEX-BOX容器属性

1.flex-direction 决定项目在主轴的排列方向。
2.flex-wrap 决定如果一条轴线排不下了,该如何换行。
3.flex-flow 是flex-direction和wrap的简写形式,默认row nowrap。
4.justify-content 决定项目在主轴方向上如何对齐。
5.align-items 决定项目在交叉轴上如何对齐。
6.align-content 定义多根轴线如何对齐。

 四. FLEX项目属性

1.order 决定项目的排列顺序,数值越小,排列越靠前。
2.flex-grow 决定项目的放大比例,默认值是0,也就是存在剩余空间,不放大。
3.flex-shrink 是也就是决定项目的缩小比例,默认是1,表示剩余空间不足时,等比缩小,如果需要不变,可以设置为0。
4.flex-basis 定义了在分配多余项目之前,项目占据的主轴空间。浏览器根据这个属性,计算主轴是否有多余空间。它的默认值为auto,即项目的本来大小。它可以设为跟width或height属性一样的值(比如350px),则项目将占据固定空间。
5.flex 是以上三个的简写,默认0 1 auto,也就是不放大,不缩小,占据项目本来大小的主轴空间。该属性有两个快捷值: auto (1 1 auto) 和 none (0 0 auto),这里也不过多赘述。
6.align-self属性 默认auto,继承flex容器,也就是父元素的align-items属性,项目和algn-items一样,只是决定单个item对交叉轴的对齐方式。

 flex-basic:定义了在分配多余项目之前,项目占据的主轴空间;

flex-wrap 决定如果一条轴线排不下了,该如何换行。nowrap |  wrapwrap-reverse

 

参考文献:https://blog.csdn.net/qq_27064559/article/details/81871675