Flex 布局速查表

130 阅读3分钟

一. 什么是flex 布局

flex布局全称是 Flexible Box 。意为弹性盒子。为盒模型提供最大的灵活性。 它有两个特别重要的概念。分别为弹性容器和弹性项目。

二. 弹性容器

image.png

上图中如果给类名为box的div设置css样式 display:flex; 那么这个div就称为弹性容器。他的每个子元素被称为弹性项目。

1. 弹性容器的6个属性

  1. flex-direction: 指定弹性容器的主轴方向,默认值为 row 即横向。
    可取的值有: row , row-reverse, column, column-reverse。

    row: 弹性项目横向按顺序从左到右依次排列,
    row-reverse: 弹性项目横向按顺序从右到左依次排列,
    column: 弹性项目纵向按顺序从上到下依次排列,
    column-reverse: 弹性项目纵向按顺序从下到上依次排列。

  2. flex-wrap: 默认情况下,所有弹性项目排列在一条线(轴线)上,该属性指定,如果一条线排列不下,弹性项目如何换行。
    默认值为 no-wrap 即不换行。
    可取的值有: wrap , no-wrap , wrap-reverse。
    wrap: 换行,第一行在上方。
    no-wrap: 不换行。
    wrap-reverse: 换行,第一行在下方。

  3. flex-flow: 为flex-direction 和 flex-wrap 的简写形式。默认值为 row no-wrap。

  4. justify-content: 指定弹性项目在主轴的对齐方式。默认值为: flex-start 即左对齐。
    可取值:
    flex-start: 左对齐。
    flex-end: 右对齐。
    space-between: 两端对齐,项目之间的间隔都相等。
    space-around:每个项目两侧的间隔都相等。这样会导致项目之间的间隔是项目与边框的间隔的两倍。
    center: 居中。
    5.align-items: 指定项目在交叉轴的对齐方式。默认值为 stretch。 可取值:
    flex-start: 交叉轴的顶点对齐。
    flex-end: 交叉轴的终点对齐。
    center: 居中。 stretch: 如果项目未设置高度或设为auto,那么项目会撑满交叉轴方向。 baseline: 项目第一行文字的基线对齐。
    6.align-content: 指定主轴有多条轴线时,轴线的对齐方式。默认值为 flex-start。
    flex-start: 交叉轴的顶点对齐。
    flex-end: 交叉轴的终点对齐。
    center: 居中。 space-between: 同justify-content。 space-around: 同justify-content。

三. 弹性项目

1.弹性项目的6个属性

1.flex-grow: 定义项目的放大比例。 默认值为 0 即如果存在剩余空间,也不放大。
取值可以是 正数数字值。
如果所有项目的flex-grow 值都为1。即如果存在剩余空间时,所有项目等比例放大。 如果一个项目的flex-grow 的值为3,则它的占的剩余空间为flex-grow的值为1的三倍。

2.flex-shrink: 定义项目的缩小比例。 默认值为 1 即空间不足时,项目收缩。 取值可以是 正数数字值。 值为 0 ,即不收缩。 如果所有项目的flex-shrink 值都为1。即如果空间不足时,所有项目等比例缩小。

3.flex-basis: 指定项目在分配剩余空间之前,项目占据的主轴空间。 默认值为 auto 即设定的大小。 可取值为 数字或auto。
如果所有项目的flex-grow 值都为1。即如果存在剩余空间时,所有项目等比例放大。
4.flex: 为flex-grow , flex-shrink , flex-basis 的缩写。 快捷值:
flex:none; === flex: 0 0 auto; flex: auto; === flex: 1 1 auto;

5.order: 指定项目在主轴上的排列顺序。 默认值 为 1。
取值不能取负数值,数值越小排列越靠前。

6.align-self: 指定项目在交叉轴的对齐方式。 默认是为 auto。即继承弹性容器的align-items的值。 可取值同 align-items