父级属性

display:flex

  • flex有两个轴向的排列方式,x轴和y轴,默认主轴x轴
  • 设置了flex属性,子级将默认已X轴排列
  • image.png

    flex-direciton 设置主轴排列方式

    属性

  • row

    • 默认值 X轴,排列方式为自左向右对其
  • row-reverse
    • 设置主轴为X轴,排列方式为自右向左对其
  • column
    • 设置主轴方向为Y轴,排列方式为自上向下对其
  • column-reverse

    • 设置主轴为Y轴,排列方式为自下向上对其

      flex-wrap 设置盒子是否换行

      属性

  • nowrap ——默认值

    • 内容超出不换行
  • wrap
    • 设置内容超出换行
  • wrap-reverse

    • 设置内容超出换行倒着排列
    • image.png

      justify-content 主轴对其方式

      属性

  • flex-start —-默认值

    • 于主轴开始位置对其
  • flex-end
    • 于主轴结尾位置对其
  • center
    • 于主轴居中位置对其
  • space-between
    • 于主轴位置平均分布位置
    • 示例,如果盒子有三个子元素,三个子元素平均分布父元素位置
    • 两侧边固定,中间自适应
    • image.png
  • space-around

    • 尽量保持盒子之间间距相同,类似于盒子之间增加margin
    • image.png

      align-items 交叉轴对其方式

  • 交叉轴就是主轴以外的轴,如果主轴为x轴,交叉轴就为y轴

    属性

  • flex-start

    • 于交叉轴开始位置对其
  • flex-end
    • 于交叉轴结尾位置对其
  • center
    • 于交叉轴居中位置对其
    • image.png
  • baseline
    • 基于文字底线对其
    • image.pngimage.png
  • stretch —— 默认值

    • 如果没有设置子元素的高度的情况下,设置stretch将默认撑开子元素至父元素高度
    • image.png

      align-content交叉轴对其方式

      和justify-content差不多,只不过align-cotnent适用于多行的交叉轴

  • image.png

    设置单行水平垂直居中

  • displya: flex

  • align-items: center
  • justify-cotent: center

    设置多行水平垂直居中

  • displya: flex

  • justiry-content:center
  • align-content: center
  • image.png

    子级属性

    order 排列权重

  • 类似于z-index

  • 用整数值来定义排列顺序,数值小的排在前面。可以为负值。
  • image.pngimage.png

    align-self子级交叉轴排列方式

  • 如果父级设置了align-items,子级设置了align-self那么会遵循子级的设置

  • 如果父级设置了align-content,子级设置了align-self那么会遵循父级的设置

    属性

  • auto —-默认值

    • 如果’align-self’的值为’auto’,则其计算值为元素的父元素的’align-items’值,如果其没有父元素,则计算值为’stretch’。
  • flex-start
    • 于交叉轴开始位置对其
  • flex-end
    • 于交叉轴结尾位置对其
  • center
    • 于交叉轴居中位置对其
    • image.png
  • baseline
    • 基于文字底线对其
    • image.png
  • stretch

    • 如果没有设置子元素的高度的情况下,设置stretch将默认撑开子元素至父元素高度
    • image.png

      flex-grow放大比例空间

  • 默认值为0

  • 给子元素设置了flex-grow:1或者更大的数字,那么这个子元素会占据父元素剩余空间,gorw设置的越大,谁就占据的越多

    flex-shrink缩小比例空间

  • 元素的收缩比例—多出盒子的部分,按照比例的大小砍掉相应的大小,即比例越大,被砍的越大

  • 默认值1
  • 如果没有手动设置 flex-shrink,则系统默认分配给每个子元素
  • 示例

    • 父元素宽400px
    • 三个子元素,分别宽度都为200px,已经超出了父元素宽度
    • 没有手动设置flex-shrink,系统默认把超出的宽度算到每个子元素身上进行宽度缩减
    • 手动设置第一个子元素为flex-shrink为1,其他两个元素flex-shrink为0
    • 则把超出的宽度算到第一个子元素身上
    • image.png

      flex-basis 内容宽度

  • 项目占据主轴的空间该属性设置元素的宽度或高度,当然width也可以用来设置元素宽度

  • 如果元素上同时出现了width 和flex-basis那么flex-basis会覆盖width的值
  • 子元素宽度尽可能按照basis来如果基准值相加大于容器宽度
  • 根据主轴的位置进行设置元素占据空间
  • 示例

    • 假设主轴为x轴
    • 子元素宽度设置200px,flex-basis设置50px
    • 最终结果 自元素的宽度为50px
      注意:如果flex-basis和widht同时使用的话,那么盒子的宽度最小是50px,如果盒子内容超出50px后,那么盒子会自动伸展,伸展到最大宽度为widht设置的宽度
      如果flex-basis大于width,那么最大值就是flex-basis,不会取值widht

      flex

  • image.png

    中间固定,两侧不平均分

    image.png

    流式布局

  • image.png

  • image.png

    圣杯布局

  • image.pngimage.png