Flex布局总结

Flex简介:

    当元素的display属性设置为flex的时候,该元素则是Flex容器,它的所有子元素自动成为容器的成员,则称为Flex项目(flex item),且Flex项目会脱离一般文档流变成Flex文档流。


容器的属性:

   1、flex-direction:决定容器成员的排列方向(在flex容器中的子元素,脱离普通文档流,成为flex文档流)

      ① row(默认):水平方向,从左到右,起点在左

      ② row-reverse :水平方向,从右到左,起点在右

      ③ column:垂直方向,从上到下,起点在上

      ④ column-reverse:垂直方向,从下到上,起点在下


   2、flex-wrap:决定容器内成员排列时,是否换行(换行只会在容器宽度装不下成员的情况,才会发生)

        ① nowrap(默认):容器成员都只排在一条轴线上,即 容器成员宽度总和 大于 容器宽度,都不换行,而是自动平均压缩成员宽度,使所有成员排序在该轴线上。


      ② wrap:换行,第一行在容器上方


      ③ wrap-reverse:换行,第一行在容器下方


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

        ① row nowrap(默认值)


② 参考上面取值,第一个值是flex-direction,第二个值是flex-wrap

   4、justify-content:决定容器成员在主轴上的水平对其方式

        ① flex-start(默认值):左对齐


        ② flex-end:右对齐


        ③ center:居中


        ④ space-between:两端对其,同一条主轴上的成员之间间隔相等


        ⑤ space-around:每个成员两侧的间隔相等,且最左边或者最右边的成员与容器边框的距离比成员间距离小一倍


    5、align-items:决定容器成员在交叉轴上的垂直对其方式(注意:该属性无法设置wrap换行的容器成员)

        ① stretch(默认值):如果成员未设置高度或者设为auto,将占满整个容器的高度

        ② flex-start:垂直方向,最上方对其(如果成员没有设置高度,则靠成员的内容撑起高度)

        ③ flex-end:垂直方向,最下方对其(如果成员没有设置高度,则靠成员的内容撑起高度)

        ④ center:垂直方向,居中对其(如果成员没有设置高度,则靠成员的内容撑起高度)

        ⑤ baseline:项目的第一行文字的基线对其,简单说就是:找到成员里第一行文字在最下面,其他成员的第一行文字进行对其(如果成员没有设置高度,则靠成员的内容撑起高度)


   6、align-content:多根轴线(已设置wrap并换行的容器才有效)在交叉轴上的垂直对其方式

        ① stretch(默认值):如果成员未设置高度或者设为auto,多行成员平均分配占满整个容器的高度

        ② flex-start:垂直方向,最上方对其(如果成员没有设置高度,则靠成员的内容撑起高度)

        ③ flex-end:垂直方向,最下方对其(如果成员没有设置高度,则靠成员的内容撑起高度)

        ④ center:垂直方向,居中对其(如果成员没有设置高度,则靠成员的内容撑起高度)

        ⑤space-between:与交叉轴两端对齐,轴线之间的间隔平均分布行文字进行对其

        ⑥space-around:每根轴线两侧的间隔都相等。所以,轴线之间的间隔比轴线与边框的间隔大一倍。


容器成员(Flex项目)的属性:


  order:属性定义项目的排列顺序。数值越小,排列轴线方向的越靠前,默认为0。


  flex-grow:成员的放大比例,默认为0,即如果存在剩余空间,也不放大。

        ① 如果设置为1,则告诉该成员需要放大容器剩余宽度(成员之间间隙就会不见)

        ② 如果是设置2或者2以上,且同轴的其他成员也有设置该属性,则按照互相之间的比例进行分配剩余空间


   flex-shrink:该属性定义了项目的缩小比例,默认为1,即如果容器的空间不足,该元素将缩小。(当容器为nowrap不换行时才会有效)

        ①如果所有项目的flex-shrink属性都为1,当空间不足时,都将等比例缩小。

        ② 如果一个项目的flex-shrink属性为0,其他项目都为1,则空间不足时,前者不缩小。


    flex-basis:该属性定义了在分配多余空间之前,成员占据的主轴空间(main size)。浏览器根据这个属性,计算主轴是否有多余空间。它的默认值为auto,即项目的本来大小。

        ①它可以设为跟width或height属性一样的值(比如350px),则成员将占据固定空间,不受flex-grow和flex-shrink改变成员大小。


    flex:该属性是 flex-grow,  flex-shrink 和 flex-basis 的简写,默认值为 0 1 auto。后两个属性可选,写或不写都能配置。


    align-self:允许单个成员有与其他成员有不一样的对齐方式,可覆盖该成员身上的align-items属性。

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

        ② 取值参考align-items的所有取值。


©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、首先回顾一下Flex布局的特点: 任意方向的伸缩,向左,向右,向下,向上 在样式层可以调换和重排顺序 主轴和侧...
    keranalice阅读 939评论 0 4
  • 根结点设置 display:flex 行内元素设置 display:inline-flex 子结点设置项:容器属性...
    Flippancy阅读 514评论 0 1
  • 参考:http://www.ruanyifeng.com/blog/2015/07/flex-grammar.ht...
    _daraDu阅读 1,890评论 0 1
  • H5移动端知识点总结 阅读目录 移动开发基本知识点 calc基本用法 box-sizing的理解及使用 理解dis...
    Mx勇阅读 4,635评论 0 26
  • 移动开发基本知识点 一.使用rem作为单位 html { font-size: 100px; } @media(m...
    横冲直撞666阅读 3,521评论 0 6