美文网首页
flex布局

flex布局

作者: 神秘嘉宾ting | 来源:发表于2017-07-11 19:40 被阅读0次

    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布局

          本文链接:https://www.haomeiwen.com/subject/ljemhxtx.html