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] 决定项目的顺序


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 网页布局(layout)是CSS的一个重点应用。 一、Flex布局是什么? Flex是Flexible Box的缩...
    抱着熊喵啃什么阅读 3,798评论 0 4
  • 网页布局(layout)是CSS的一个重点应用。 布局的传统解决方案,基于盒状模型,依赖display属性 +po...
    老夫的天阅读 3,907评论 2 6
  • 转自--阮一峰, 此人写的很详细, 收藏了一下, 非常感谢 网页布局(layout)是CSS的一个重点应用。 布局...
    春雨霏霏_____阅读 4,290评论 0 0
  • 一、Flex布局是什么? Flex是Flexible Box的缩写,意为”弹性布局”,用来为盒状模型提供最大的灵活...
    穿越人海遇见你阅读 10,528评论 0 3
  • 写在前面 之前一直对于布局有一种迷茫,不知道该如何学习,以及学习到什么程度,在论坛上进行了提问,老师给我做了解答。...
    KoalaT阅读 2,435评论 0 2