Fork me on GitHub

flex-box 弹性盒子布局

Flex是什么

    弹性布局(flexible box)模块(目前是w3c候选的推荐)旨在提供一个更加有效的方式来布置,对齐和分布在容器之间的各项内容,即使它们的大小是未知或者动态变化的。

  由于flexbox是一个整体模块,而不是单一的一个属性,它涉及到了很多东西,包括它的整个属性集。它们之中有一些是在父容器上设置,有一些则是在子容器上设置。

与栅格布局(grid Layout)的区别

    Flexbox布局是最合适的一个应用程序的组件,以及小规模的布局,而网格布局是用于较大规模的布局。

 属性介绍

1、display属性 (适用于父类容器元素上)   定义一个flex容器,内联或者根据指定的值,来作用于下面的子类容器。

  • box:将对象作为弹性伸缩盒显示。(伸缩盒最老版本)
  • inline-box:将对象作为内联块级弹性伸缩盒显示。(伸缩盒最老版本)
  • flexbox:将对象作为弹性伸缩盒显示。(伸缩盒过渡版本)
  • inline-flexbox:将对象作为内联块级弹性伸缩盒显示。(伸缩盒过渡版本)
  • flex:将对象作为弹性伸缩盒显示。(伸缩盒最新版本)
  • inline-flex:将对象作为内联块级弹性伸缩盒显示。(伸缩盒最新版本)
  • css 列(CSS columns)在弹性盒子中不起作用
  • floatclear and vertical-align 在flex项目中不起作用2、flex-direction (适用于父类容器的元素上)   定义:设置或检索伸缩盒对象的子元素在父容器中的位置。原文来自:http://caibaojian.com/flexbox-guide.html

2、flex-direction (适用于父类容器的元素上)  定义:设置或检索伸缩盒对象的子元素在父容器中的位置。

  • row:横向从左到右排列(左对齐),默认的排列方式。
  • row-reverse:反转横向排列(右对齐,从后往前排,最后一项排在最前面。
  • column:纵向排列。
  • column-reverse:反转纵向排列,从后往前排,最后一项排在最上面。
    .box{
        display:-webkit-flex;
        display:flex;
        flex-direction:row;
        }

     

3、flex-wrap (适用于父类容器上) 设置或检索伸缩盒对象的子元素超出父容器时是否换行。

  • nowrap:当子元素溢出父容器时不换行。
  • wrap:当子元素溢出父容器时自动换行。
  • wrap-reverse:反转 wrap 排列。
    .box{
        display:-webkit-flex;
        display:flex;
        -webkit-flex-wrap:nowrap;
        flex-wrap:nowrap;
    }

     

 

 4、flex-flow (适用于父类容器上)  复合属性。设置或检索伸缩盒对象的子元素排列方式。(本属性,实为flex-direction属性和flex-wrap属性的结合)

  • [ flex-direction ]:定义弹性盒子元素的排列方向。
  • [ flex-wrap ]:定义弹性盒子元素溢出父容器时是否换行。
    .box{
        display:-webkit-flex;
        display:flex;
        -webkit-flex-flow:row nowrap;
        flex-flow:row nowrap;
    }

     

 5、justify-content (适用于父类容器上)  设置或检索弹性盒子元素在主轴(横轴)方向上的对齐方式。  当弹性盒里一行上的所有子元素都不能伸缩或已经达到其最大值时,这一属性可协助对多余的空间进行分配。当元素溢出某行时,这一属性同样会在对齐上进行控制。

  • flex-start:弹性盒子元素将向行起始位置对齐。
  • flex-end:弹性盒子元素将向行结束位置对齐。
  • center:弹性盒子元素将向行中间位置对齐。
  • space-between:弹性盒子元素会平均地分布在行里。如果最左边的剩余空间是负数,或该行只有一个子元素,则该值等效于'flex-start'。
  • space-around:弹性盒子元素会平均地分布在行里,两端保留子元素与子元素之间间距大小的一半。
    .box{
        display:-webkit-flex;
        display:flex;
        -webkit-justify-content:flex-start;
        justify-content:flex-start;
    }

     

6、align-items (适用于父类容器上)   设置或检索弹性盒子元素在侧轴(纵轴)方向上的对齐方式。

  • flex-start:弹性盒子元素的侧轴(纵轴)起始位置的边界紧靠住该行的侧轴起始边界。
  • flex-end:弹性盒子元素的侧轴(纵轴)起始位置的边界紧靠住该行的侧轴结束边界。
  • center:弹性盒子元素在该行的侧轴(纵轴)上居中放置。(如果该行的尺寸小于弹性盒子元素的尺寸,则会向两个方向溢出相同的长度)。
  • baseline:如弹性盒子元素的行内轴与侧轴为同一条,则该值与'flex-start'等效。其它情况下,该值将参与基线对齐。
  • stretch:如果指定侧轴大小的属性值为'auto',则其值会使项目的边距盒的尺寸尽可能接近所在行的尺寸,但同时会遵照'min/max-width/height'属性的限制。
    .box{
        display:-webkit-flex;
        display:flex;
        -webkit-align-items:flex-start;
        align-items:flex-start;
    }

     

7、align-content (适用于父类容器上) 设置或检索弹性盒堆叠伸缩行的对齐方式。

  • flex-start:各行向弹性盒容器的起始位置堆叠。
  • flex-end:各行向弹性盒容器的结束位置堆叠。
  • center:各行向弹性盒容器的中间位置堆叠。
  • space-between:各行在弹性盒容器中平均分布。
  • space-around:各行在弹性盒容器中平均分布,两端保留子元素与子元素之间间距大小的一半。
  • stretch:各行将会伸展以占用剩余的空间。如果剩余的空间是负数,该值等效于'flex-start'。在其它情况下,剩余空间被所有行平分,以扩大它们的侧轴尺寸。
    .box{
        display:-webkit-flex;
        display:flex;
        -webkit-flex-wrap:wrap;
        flex-direction:wrap;
        -webkit-align-content:flex-start;
        align-content:flex-start;
    }

     

8、order (适用于弹性盒模型容器子元素)

  • <integer>:用整数值来定义排列顺序,数值小的排在前面。可以为负值。
    .box{
        display:-webkit-flex;
        display:flex;
        -webkit-order:-1;
        order:-1;
    }

     

 

posted @ 2016-11-29 16:03  XW_Wong  阅读(392)  评论(0编辑  收藏  举报