美文网首页
flex 布局

flex 布局

作者: 幽涯 | 来源:发表于2017-12-07 14:34 被阅读0次

    一、介绍

    • Flexible Box 的缩写,译为「弹性布局」
    • 任何一个容器都可以指定为 Flex 布局
      .box {
        display: flex;
      }
      
    • 行内元素也可以使用 Flex 布局
      .box {
        display: inline-flex;
      }
      
    • Webkit 内核浏览器必须加上 -webkit- 前缀
      .box {
        display: -webkit-flex;
        display: flex;
      }
      

    设为 Flex 布局之后,元素的 float、clear 和 vertical-align 属性将失效

    二、概念

    • 采用 Flex 布局的元素称为 Flex 容器(flex contanier),简称“容器”;
    • 它的所有子元素自动成为容器成员,称为 Flex 项目(flex item),简称“项目”;
    • 容器默认存在水平的主轴(main axis)和垂直交叉轴(cross axis)两根轴;
    • 主轴的开始位置(与边框的交叉点)叫做 main start,结束位置叫做 main end;
    • 交叉轴的开始位置叫做 cross start,结束位置叫做 cross end;
      -项目默认沿主轴排列;
    • 单个项目占据的主轴空间叫做 main size,占据的交叉轴控件叫做 cross size;

    三、容器属性

    • flex-direction:
      主轴方向;(项目排列方向)
      • row:水平从左至右;(默认)
      • row-reverse:水平从右向左;
      • column:垂直从上往下;
      • column-reverse:垂直从下往上;
    • flex-wrap:
      定义如果一条轴线排不下如何换行;
      • nowrap:不换行;(默认)
      • wrap:从上往下换行;
      • wrap-reverse:从下往上换行;
    • flex-flow:
      flex-direction 属性和 flex-wrap 属性的合并简写形式;(默认值为 row nowrap)
    • justify-content:
      定义了项目在主轴上的对齐方式;
      每个属性定义的对其方式和轴的方向有关;
      下面设以主轴从左到右;
      • flex-start:左对齐;(默认)
      • flex-end:右对齐;
      • center:居中;
      • space-between:两端对齐,项目之间间隔相等;
      • space-around:每个项目两侧的间隔相等;(项目间的间隔比项目与边框的间隔大一倍)
    • align-items:
      定义项目在交叉轴上如何对齐;
      每个属性定义的对齐方式和交叉轴方向有关;
      下面设交叉轴从上到下;
      • flex-start:交叉轴的起点对齐;
      • flex-end:交叉轴的终点对齐;
      • center:交叉轴的中点对齐;
      • baseline:项目的第一行文字的基线对齐;
      • stretch:若项目未设置高度或设为 auto,将占满整个容器高度;(默认)
        flex-align-item.jpg
    • align-content:
      定义了多根轴线的对齐方式;
      如果项目只有一根轴线,该属性不起作用;
      • flex-start:与交叉轴的起点对齐;
      • flex-end:与交叉轴的终点对齐;
      • space-between:与交叉轴的中点对齐;
      • space-around:与交叉轴两端对齐,轴线之间间隔平均分布;
      • stretch:轴线占满整个交叉轴;(默认)


        flex-align-content.jpg

    四、项目的属性

    1、order:

    定义了项目的排列顺序;
    数值越小,排列越靠前;(默认为0)

    2、flex-grow:

    定义项目的放大比例;(默认为0)
    如果所有项目的 flex-grow 属性都为 1,则它们将等分剩余空间;
    如果一个项目的 flex-grow 属性为 2,其他项目都为 1,则前者占据剩余空间将比其他项多一倍;

    3、flex-shrink:

    定义了项目的缩小比例;(默认为1)
    即如果空间不足,该项目将缩小;
    如果所有项目的 flex-shrink 属性都为 1,空间不足时都等比缩小;
    如果一个项目的 flex-shrink 属性为 0,其他项目都为 1,空间不足时,前者不缩小,其他等比缩小;
    负值对该属性无效;

    4、flex-basis:

    定义了在分配多余空间之前,项目占据的主轴空间(main size);
    浏览器根据这个属性计算主轴是否有多余空间;
    默认值为 auto,即项目的本来大小;
    可以设为跟 widthheight 属性一样的值,则项目占据固定空间;

    5、flex

    flex-growflex-shrinkflex-basis 的简写,默认值为 0 1 auto
    第一个必填,后两个可选;
    该属性有两个快捷值 auto (1 1 auto)none (0 0 auto)

    6、align-self

    允许单个项目有与其他项目不同的对齐方式,可覆盖 align-item 属性;
    默认值为 auto,表示继承父元素的 align-items 属性;
    属性值除了多出一个 auto,其他完全和 align-item 相同;

    相关文章

      网友评论

          本文标题:flex 布局

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