flex布局

Flexible Box Layout:

  弹性赫模型布局:提供一种更加高效的方式来对 容器中的条目进行布局、对齐和分配空间


二、盒模型的概念

1、容器:采用flex 布局的元素都称为容器 Flex Container

2、项目:容器内的所有子元素自动成为容器成员,称为项目  Flex Item

3、两根轴:

      3-1main axis(主轴):

              容器中水平的称为主轴

              main start主轴的开始位置

              main end主轴的结束位置

      3-2、cross axis(交叉轴):

              容器中垂直的称为交叉轴。

              cross start交叉轴的开始位置。

              cross end交叉轴的结束位置。

4、项目默认按照主轴排列:

     4-1:main size单个项目占据的主轴空间

     4-2cross size单个项目占据的交叉轴空间


三、使用

1、任何容器都可以指定为flex布局:

       1-1:.box { display: flex; }

       1-2:flex布局之后,子元素成为内联块元素

       1-3:注意:display: -webkit-flex;

2、行内元素也可以使用flex布局:.box section { display: inline-flex; }

3、注意设置后,float /clear / vertical-align将失效

四、容器的样式

/*给容器标签设置flex属性,则该容器中项目的布局就会按照flex的方式布局*/

/*如果父标签成了flex的容器,则子标签会有内联块样式的相关属性;且子标签所设置的float\clear\vertical-align属性会失效*/

1、   flex-direction:决定主轴的方向(项目的排列方向)

         /*通过修改主轴的方向,进而修改项目的布局顺序*/

        flex-derection: row | row-reverse | column | column-reverse;

         1-1值:    row(默认值)   主轴为水平方向(左到右)

                          row-recerse      主轴为水平方向(右到左)

                          column          主轴为垂直方向(上到下)

                         column-reverse        主轴为垂直方向(下到上)


2、 flex-wrap:默认情况下,项目都排在一条线(轴线),如果一条轴线排不下,flex-wrap决定该如何换行。

指定项目是否换行  flex-wrap: nowrap | wrap| wrap-reverse

       1-1值:   no-wrap(默认)不换行

                      wrap   换行,第一行在上方

                       wrap-reverse  换行,第一行在下方


3、 flex-flow: flex-flow属性是flex-direction属 性和flex-wrap的简写形式

        默认值如 flex-flow:wrap row


4、 justify-content:决定项目在主轴上的对齐方式(以下属性默认从左向右为例)

        justify-content: flex-start | flex-end | center |space-between | space-around;         

      1-1值:   flex-start:研左侧对齐

                      flex-end:沿右侧对齐

                      center:沿中间对齐

                      space-around:均匀分布(项目两侧留白相等)

                      space-between:项目靠两侧对齐


5、align-items:决定项目沿交叉的对齐方式(以默认从上到下为例)。

           align-items:flex-start | center | flex-end | stretch | baseline

        5-1值:  flex-start:沿上方对齐

                     center:沿中间对齐

                     flex-end:沿下方对齐

                     baseline:沿文字基线对齐

                    stretch:默认值 填满整个交叉轴,将占满整个容器的高度


6、  align-content:定义了多根轴线的对齐方式,如果项目只有一根轴线,该属性不起作用。

       align-content: flex-start | flex-end | center | space-between | space-around | stretch:默认值

        6-1值:flex-start:沿交叉轴起点对齐

                     flex-end:沿交叉轴结束点对齐

                     center:沿交叉轴中点对齐

                     space-between:沿交叉轴两侧对齐

                     space-around:沿交叉轴

                     stretch (默认值)轴线占满整个交叉轴


align-items和align-content的异同

相同点:都是设置项目在交叉轴方向上的对齐方式

不同点:

在只有单根轴线(项目不换行)时,使用align-items设置对齐方式

在有多跟轴线(项目换行)时,使用align-content把多跟交叉轴合并为一根,每一行上的项目都参照同一根交叉轴进行对齐。

如果在多跟轴线情况下使用align-items来设置交叉轴方向上的对齐方式,每一行的项目会参照自己这一行上的交叉轴进行对齐(效果:行与行之间有空隙)


、项目的属

1、 flex-grow:[number] 定义项目的放大比例

      number: 数值 默认为0 不放大,值越大,放大比率越大

      默认为0,即如果存在剩余空间,也不放大

       如果所有的flex-grow属性都为1,则他们将等分剩余空间如果一个项目的flex-grow属性为            2,其它项目都为1,则前者占据的剩余空间将⽐其它项多一倍


2、flex-shrink:[number]  定义了项目的缩小比例

       number: 数值 默认1 自动缩小,值越大,缩小比率越大

       默认为1即如果空间不足,该项目将缩小

       如果所有的项目flex-shrink属性都为1,当空间不足时,都将等比例缩小。如果一个项目的          flexshrink属性为0,则其它项目都为1,则空间不足时,前者不缩小。

        负值对该属性无效


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

                flex-basis: auto | pixel | 百分比

              默认值为auto,即项目的本来大小

                auto : 使用项目本身大小

                pixel : 使用指定的像素值

                percent : 使用指定的百分比

                                 100% 当wrap 时,项目会占容器的整个宽度

                                当nowrap 时, 项目会占容器主轴剩余的宽度(无他放大无效)


4、flex flex: flex-grow  | flex-shrink | flex-basis

       如:flex:1 1 100%


5、align-self:属性允许单个项目有与其它项目不一样的对齐方式,可覆盖align-items属性

      flex-start | center | flex-end | stretch | baseline 决定项目自身的对齐方式(相对于交叉轴)

      默认值auto表示继承父元素的align-items属性,如果没有父元素,则等同于stretch

     该属性有6个值,除了auto,其它都与align-items属性完全一致


6、 order定义项目的排列顺序 数值越小,排列越靠前 默认为0

         order: [number] 决定项目的顺序


你可能感兴趣的:(flex布局)