参考:
《CSS权威指南》(第四版)
flex布局教程-语法篇-阮一峰
1、Flex布局是什么
FlexBox,弹性盒布局,顾名思义,就是元素具有弹性,能根据可用空间大小增减尺寸。
2、基本概念
- 弹性盒:在任何元素上声明
display:flex
或display: inline-flex
便激活弹性盒布局,这个元素就成为了弹性容器
(flex container)。 - 弹性元素:弹性容器的子元素成为
弹性元素
(flex item)。 - 主轴和交叉轴:flexbox的特性是沿着主轴或者交叉轴对齐之中的元素。
3、弹性容器
弹性容器为其子元素生成弹性格式化上下文,这些子元素不论是DOM节点、文本节点,还是生成的内容,都称为弹性元素。
弹性容器中的绝对定位元素
(position:absolute)
也是弹性元素。
flex-direction
flex-direction
属性决定主轴的方向(即项目的排列方向)。
.box { flex-direction: row | row-reverse | column | column-reverse; }
flex-wrap
默认情况下,项目都排在一条线(又称"轴线")上。flex-wrap
属性定义,如果一条轴线排不下,如何换行。
它可能取三个值。
(1)nowrap
(默认):不换行。
(2)wrap
:换行,第一行在上方。
(3)wrap-reverse
:换行,第一行在下方。
flex-flow
flex-flow
属性是flex-direction
属性和flex-wrap
属性的简写形式,默认值为row nowrap
。
justify-content
justify-content
定义在弹性元素在主轴上的对齐方式。
有5个取值:
:::info
flex-start
(默认值):左对齐flex-end
:右对齐center
: 居中space-between
:两端对齐,项目之间的间隔都相等。space-around
:每个项目两侧的间隔相等。所以,项目之间的间隔比项目与边框的间隔大一倍。
:::
align-items
定义弹性元素在交叉轴如何对齐
.box {
align-items: flex-start | flex-end | center | baseline | stretch;
}
它可能取5个值。具体的对齐方式与交叉轴的方向有关,下面假设交叉轴从上到下。
:::info
flex-start
:交叉轴的起点对齐。flex-end
:交叉轴的终点对齐。center
:交叉轴的中点对齐。baseline
: 项目的第一行文字的基线对齐。stretch
(默认值):如果项目未设置高度或设为auto,将占满整个容器的高度。
:::
align-content
align-content
指定在垂轴方向上如何对齐多行弹性元素。所以align-content
属性值只适用于多行显示的弹性容器,对禁止换行和只有一行的弹性容器没有影响。
align-content
属性与align-items
在取值和相关概念上是一样的,但二者的作用不同,align-items
指定的是每一行中弹性元素的定位方式。而align-content
属性更类似于justify-content
,只不过它的作用是指定如何在垂轴方向上对齐多行弹性元素。
.box {
align-content: flex-start | flex-end | center | space-between | space-around | stretch;
}
该属性可能取6个值。
:::info
flex-start
:与交叉轴的起点对齐。flex-end
:与交叉轴的终点对齐。center
:与交叉轴的中点对齐。space-between
:与交叉轴两端对齐,轴线之间的间隔平均分布。space-around
:每根轴线两侧的间隔都相等。所以,轴线之间的间隔比轴线与边框的间隔大一倍。stretch
(默认值):轴线占满整个交叉轴。
:::
4、容器内子项目属性
order
order
属性定义项目的排列顺序。数值越小,排列越靠前,默认为0。
.item { order: <integer>; }
flex 属性
flex
属性是flex-basis、flex-grow、flex-shrink的简写,这几个 flex 属性的作用其实就是改变了 flex 容器中的可用空间的行为。
让我们先来了解下可用空间的概念:
可用空间的概念:
假设在 1 个 500px 的容器中,我们有 3 个 100px 宽的元素,那么这 3 个元素需要占 300px 的宽,剩下 200px 的可用空间。在默认情况下,flexbox 的行为会把这 200px 的空间留在最后一个元素的后面。
如果期望这些元素能自动地扩展去填充满剩下的空间,那么我们需要去控制可用空间在这几个元素间如何分配,这就是元素上的那些** flex **属性要做的事。
align-self
align-self
属性允许单个项目有与其他项目不一样的对齐方式,可覆盖align-items
属性。默认值为auto
,表示继承父元素的align-items
属性,如果没有父元素,则等同于stretch
。
.item {
align-self: auto | flex-start | flex-end | center | baseline | stretch;
}
标签:Flex,元素,flex,align,布局,弹性,文学,对齐,属性
From: https://www.cnblogs.com/Nicander/p/17062839.html