Flexbox 布局教程

Flex 布局是什么?

Flex 是 Flexible Box 的缩写,意为"弹性布局",用来为盒状模型提供最大的灵活性。布局

任何一个容器均可以指定为 Flex 布局。flex

使用 flex 布局首先要设置父容器 display: flex,而后再设置 justify-content: center 实现水平居中,最后设置 align-items: center 实现垂直居中(须要在肯定height下才能实现)。spa

#dad {
    height:300px;
    display: flex;
    justify-content: center;
    align-items: center
}

justify-content 和 align-items 是啥?哪里能够看出横向、竖向的语义?是的,flex 的确没有那么简单,这就要从两个基本概念提及了。code

flex 的核心的概念就是 容器 和 容器包括外层的 父容器 和内层的 子容器包括 主轴 和 交叉轴,能够说 flex 布局的所有特性都构建在这两个概念上。blog

 1、容器


 

1.1  父容器

1.1.1  justify-content属性用于定义如何沿着主轴方向排列子容器。

  • flex-start:起始端对齐

  • flex-end:末尾段对齐

  •  center:居中对齐

  •  space-around:子容器沿主轴均匀分布,位于首尾两端的子容器到父容器的距离是子容器间距的一半

  •  space-between:子容器沿主轴均匀分布,位于首尾两端的子容器与父容器相切

 

1.1.2  align-items属性用于定义垂直方向分配子容器的间距。

  •  flex-start:起始端对齐

  •  flex-end:末尾段对齐

  •  center:居中对齐

  •  baseline:基线对齐,这里的 baseline 默认是指首行文字,即 first baseline,全部子容器向基线对齐,交叉轴起点到元素基线距离最大的子容器将会与交叉轴起始端相切以肯定基线。

  •  stretch:子容器沿交叉轴方向的尺寸拉伸至与父容器一致。

 

1.2  子容器

在主轴上如何伸缩:flex

子容器是有弹性的(flex 即弹性),它们会自动填充剩余空间,子容器的伸缩比例由 flex 属性肯定。it

flex 的值能够是无单位数字(如:1, 2, 3),也能够是有单位数字(如:15px,30px,60px),还能够是 none 关键字。子容器会按照 flex 定义的尺寸比例自动伸缩,若是取值为none 则不伸缩。io

虽然 flex 是多个属性的缩写,容许 1 - 3 个值连用,但一般用 1 个值就能够知足需求,它的所有写法可参考下图。class

  •  flex-start:起始端对齐

  •  flex-end:末尾段对齐

  •  center:居中对齐

  •  baseline:基线对齐

  •  stretch:拉伸对齐

 

2、轴


 

 包括 主轴 和 交叉轴,咱们知道 justify-content 属性决定子容器沿主轴(水平方向)的排列方式,align-items 属性决定子容器沿着交叉轴(垂直方向)的排列方式

  • 从左到右:flex-direction: row容器

  • 从上到下:flex-direction: column

  • 从右到左:flex-direction: row-reverse

  • 从下到上:flex-direction: column-reverse

 

flex 进阶概念(自适应不一样分辨率)

一、父容器

  • 设置换行方式:flex-wrap扩展

    决定子容器是否换行排列,不但能够顺序换行并且支持逆序换行。

 

  • nowrap:不换行 

  •  wrap:换行

  • wrap-reverse:逆序换行

 

  • 多行沿交叉轴对齐:align-content

    当子容器多行排列时,设置行与行之间的对齐方式。

  •  flex-start:起始端对齐

  •  flex-end:末尾段对齐

  •  center:居中对齐

  •  space-around:等边距均匀分布

  •  space-between:等间距均匀分布

  •  stretch:拉伸对齐

 

二、子容器

  • 设置基准大小:flex-basis

    flex-basis 表示在不伸缩的状况下子容器的原始尺寸。主轴为横向时表明宽度,主轴为纵向时表明高度。

 

 

  • 设置扩展比例:flex-grow

    子容器弹性伸展的比例。如图,剩余空间按 1:2 的比例分配给子容器。

 

 

  • 设置排列顺序:order

    改变子容器的排列顺序,覆盖 HTML 代码中的顺序,默认值为 0,能够为负值,数值越小排列越靠前。

 

flex总结

相关文章
相关标签/搜索