Flexbox 布局教程

Flex 布局是什么?

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

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

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

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

Flexbox 布局教程

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

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

一、容器


1.1  父容器

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

Flexbox 布局教程

  • flex-start:起始端对齐

Flexbox 布局教程

  • flex-end:末尾段对齐

Flexbox 布局教程

  • center:居中对齐

Flexbox 布局教程

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

Flexbox 布局教程

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

Flexbox 布局教程

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

Flexbox 布局教程

  • flex-start:起始端对齐

Flexbox 布局教程

  • flex-end:末尾段对齐

Flexbox 布局教程

  • center:居中对齐

Flexbox 布局教程

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

Flexbox 布局教程

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

Flexbox 布局教程

1.2  子容器

在主轴上如何伸缩:flex

Flexbox 布局教程

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

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

虽然 flex 是多个属性的缩写,允许 1 - 3 个值连用,但通常用 1 个值就可以满足需求,它的全部写法可参考下图。

Flexbox 布局教程

  • flex-start:起始端对齐

Flexbox 布局教程

  • flex-end:末尾段对齐

Flexbox 布局教程

  • center:居中对齐

Flexbox 布局教程

  • baseline:基线对齐

Flexbox 布局教程

  • stretch:拉伸对齐

Flexbox 布局教程

二、轴


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

  • 从左到右:flex-direction: row

Flexbox 布局教程

  • 从上到下:flex-direction: column

Flexbox 布局教程

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

Flexbox 布局教程

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

Flexbox 布局教程

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

1、父容器

  • 设置换行方式:flex-wrap

    决定子容器是否换行排列,不但可以顺序换行而且支持逆序换行。

Flexbox 布局教程

  • nowrap:不换行

Flexbox 布局教程

  • wrap:换行

Flexbox 布局教程

  • wrap-reverse:逆序换行

Flexbox 布局教程

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

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

Flexbox 布局教程

  • flex-start:起始端对齐

Flexbox 布局教程

  • flex-end:末尾段对齐

Flexbox 布局教程

  • center:居中对齐

Flexbox 布局教程

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

Flexbox 布局教程

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

Flexbox 布局教程

  • stretch:拉伸对齐

Flexbox 布局教程

2、子容器

  • 设置基准大小:flex-basis

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

Flexbox 布局教程

Flexbox 布局教程

  • 设置扩展比例:flex-grow

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

Flexbox 布局教程

Flexbox 布局教程

  • 设置排列顺序:order

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

Flexbox 布局教程

flex总结

Flexbox 布局教程

上一篇:sitecore系列教程之Sitecore个性化-配置文件,模式和角色


下一篇:【转】 bio 与块设备驱动