flexbox简介

  • 正如他的名字所示——Flex,弹性的意思。
  • 主要是为了适应各种各样的显示设备和屏幕大小
  • FlexBox布局元素分为:弹性容器弹性项
  • Flexbox(弹性盒子)布局模式(目前是个W3C规范草案)旨在为布局,对齐和分布容器内的子项提供一种更加高效的方式,修改其子项的宽、高乃至顺序的能力,并且足够完美的去填充可用的空间。一个使用了Flex布局的容器,将会扩展其子项以至于填充可用的空间,或者缩小他们以防止溢出容器。
  • ###### 注意:FlexBox布局最适用于应用程序的组件和小规模布局,而网格布局更适用于大规模的布局。
  • ###### 注意:在IE中,FlexBox只兼容 IE10+

flexbox历史:

  • 2009年,W3C提出了一种新的方案—-Flex布局,可以简便、完整、响应式地实现各种页面布局。目前,它已经得到了所有浏览器的支持,这意味着,现在就能很安全地使用这项功能。
  • 2009年的老语法 display:box;
  • 2011年一种临时的非官方的语法 display:flexbox;
  • 已成为规范的新语法 display:flex;

使用方法

  • 给父亲指定 display: flex; 给孩子指定 flex: 1;
  • ###### 注意,设为Flex布局以后,子元素的float、clear和vertical-align属性将失效。
.flex_box {
    display: -webkit-flex;
    display: -webkit-box;
    display: -ms-flexbox;
    display: -moz-box;
    display: flex; 
}
.flex_item {
    -webkit-box-flex: 1;
    -moz-box-flex: 1;
    -webkit-flex: 1;
    -ms-flex: 1;
    flex: 1;
}

弹性容器 的属性

    • flex-direction 
    • flex-direction属性决定弹性项的排列方向。
    • flex-direction: row | row-reverse | column | column-reverse;
    • flex-wrap、 
    • flex-wrap属性定义,如果一条轴线排不下,如何换行。
    • flex-wrap: nowrap | wrap | wrap-reverse;
    • flex-flow 
    • flex-flow属性是flex-direction属性和flex-wrap属性的简写形式,默认值为row nowrap。
    • justify-content 
    • justify-content属性定义了项目在主轴上的对齐方式。
    • justify-content: flex-start | flex-end | center | space-between | space-around;
    • align-items 
    • align-items属性定义项目在交叉轴上如何对齐。
    • align-items: flex-start | flex-end | center | baseline | stretch;
    • align-content 
    • align-content属性定义了多根轴线的对齐方式。如果项目只有一根轴线,该属性不起作用。
    • align-content: flex-start | flex-end | center | space-between | space-around | stretch;

    弹性项 的属性

    • flex-grow
    • flex-grow属性定义项目的放大比例,默认为0,即如果存在剩余空间,也不放大。
    • flex-grow: ;
    • flex-shrink
    • flex-shrink属性定义了项目的缩小比例,默认为1,即如果空间不足,该项目将缩小。
    • flex-shrink: ; /* default 1 */
    • flex-basis
    • flex-basis属性定义了在分配多余空间之前,项目占据的主轴空间(main size)。浏览器根据这个属性,计算主轴是否有多余空间。它的默认值为auto,即项目的本来大小。
    • flex-basis: | auto; /* default auto */
    • flex
    • flex 属性用于设置或检索弹性盒模型对象的子元素如何分配空间。
    • flex 属性是 flex-grow、flex-shrink 和 flex-basis 属性的简写属性。flex-shrink和flex-basis是可选的。默认是0 1 auto。
    • 注意:如果元素不是弹性盒模型对象的子元素,则flex属性不起作用
    • 该属性有两个快捷值:auto (代表 1 1 auto) 和 none (代表 0 0 auto)。
    • order
    • order属性定义项目的排列顺序。数值越小,排列越靠前,默认为0。
    • order: ;
    • align-self
    • align-self属性允许单个项目有与其他项目不一样的对齐方式,可覆盖align-items属性。默认值为auto,表示继承父元素的align-items属性,如果没有父元素,则等同于stretch。
    • align-self: auto | flex-start | flex-end | center | baseline | stretch;