1.弹性盒子是用来代替浮动的页面布局
2.弹性容器:开启弹性盒子的那个元素。开启弹性盒子用display:flex
3.弹性元素:弹性容器的直接⼦元素是弹性元素
4.块元素开启弹性盒子:display:flex; ,
行内元素开启弹性盒子: display:inline-flex;
注意:一个元素可以同时是弹性容器和弹性元素
5.弹性容器默认有两条轴,水平方向的叫主轴,垂直方向的叫测轴(辅轴)
6.弹性容器的属性(6个)
(1).flex-direction : row;
决定主轴的方向,属性值:
row
(默认值):主轴为⽔平⽅ 向,起点在左 端。
row-reverse
:主轴为⽔平⽅向, 起点在右端。
column
:主轴为 垂直⽅向,起点 在上沿。
column-reverse
:主轴为 垂直⽅向,起点 在下沿。
![](https://img-blog.csdnimg.cn/direct/04cd59686a7748d988f547570f202e5f.png)
![](https://img-blog.csdnimg.cn/direct/d3c4b279aa4544fa8f09bc791c6ce957.png)
![](https://img-blog.csdnimg.cn/direct/42af401142144882b2b3c343432e28b5.png)
![](https://img-blog.csdnimg.cn/direct/39166a43a104410fbb023a70b8ccdccc.png)
(2).flex-wrap: nowrap;
决定一条轴线排不下是否换行,属性值:
nowrap(默认值):不换行。
wrap:换行。
![](https://img-blog.csdnimg.cn/direct/163bb4d8e6f244a1a5a55f8a56c85a14.png)
![](https://img-blog.csdnimg.cn/direct/3dc72054dec14cecb2e62b0ff6dbe996.png)
注意:如果不换行就会自动调节弹性元素的宽度,使其能刚好一行
(3).justify-content: flex-start;
觉得了主轴上的元素对齐方式,属性值:
flex-start(默认值):左对⻬。
flex-end:右对⻬。
center: 居中。
space-between
:两端对⻬,项⽬之间的间隔都相等。
space-around
: 每个项⽬两侧的 间隔相等。所以,项⽬之间的间隔⽐项⽬与边 框的间隔⼤⼀ 倍。
space-evenly
: 项⽬是分布 的,以便任何 两个项⽬之间 的间距(和边 缘的空 间)相 等
![](https://img-blog.csdnimg.cn/direct/c0433dd707f2483dbf262dcfc3749bc9.png)
![](https://img-blog.csdnimg.cn/direct/4d517d5ec3f543ce88301dd24c81b626.png)
![](https://img-blog.csdnimg.cn/direct/28679b51697a435399f16568dc04ffb6.png)
![](https://img-blog.csdnimg.cn/direct/9141030015e14e10b7d3467676152fbd.png)
![](https://img-blog.csdnimg.cn/direct/c78d6eefa7864b4aa16e6fa25a73ed12.png)
![](https://img-blog.csdnimg.cn/direct/dbe23f703b0d4a81957f926e7cee726d.png)
(4).align-items: flex-start;
决定了在辅轴上的排列方式,在子项为单行的时候使用,属性值:
flex-start
:辅轴
的起点对⻬。
flex-end
:辅轴的终点对⻬。
center
:辅轴的 中点对⻬。
baseline
: 项⽬的 第⼀⾏⽂字的基 线对⻬。
stretch
(默认值):如果项⽬未设置⾼度或设 为auto,将占满 整个容器的⾼度
![](https://img-blog.csdnimg.cn/direct/f03e32f7801c4cda9c3c1736108e3d8a.png)
![](https://img-blog.csdnimg.cn/direct/b5f15656fb694f96a5cf816172499d67.png)
![](https://img-blog.csdnimg.cn/direct/f1a821f05e7d4d69873b9bde1d120461.png)
(5).align-content: flex-start;
决定了
多根轴线的
对⻬⽅式(⼦项出
现换⾏的情况)
如果项⽬只有⼀根
,该属性不起
作⽤。
属性值:
flex-start
:与辅轴
的起点对
⻬。
flex-end
:与辅轴的终点对⻬。
center
:与辅轴的中点对⻬。
space-between
:与辅轴两端对⻬,轴 线之间的间隔平均分布。
space-around
: 每根轴线两侧的 间隔都相等。所 以,轴线之间的 间隔⽐轴 线与边 框的间隔⼤⼀倍。
stretch
(默认 值):轴线占满 整个辅轴。
![](https://img-blog.csdnimg.cn/direct/79268292ceef4a77b12d576cc6ccedd8.png)
![](https://img-blog.csdnimg.cn/direct/beb7fb1cd31f487c82b597feadb597b0.png)
![](https://img-blog.csdnimg.cn/direct/19913bbf8d984101b112923a85e15b46.png)
![](https://img-blog.csdnimg.cn/direct/19cb4485e4134c0380121ef37479b895.png)
![](https://img-blog.csdnimg.cn/direct/e1218021edbb4cba94e93c438cf63925.png)
![](https://img-blog.csdnimg.cn/direct/7b65494660924546b7ec84fdb438dfd6.png)
、
(6).flex-flow: row nowrap;
是flex-direction属
性和flex-wrap属
性的简写形式,默
认值为row
nowrap
![](https://img-blog.csdnimg.cn/direct/c0aca33f64d24239bcafe1a359b571a8.png)
7.弹性元素的属性(6个):
(1). order: 1;
决定元素的
排列顺
序。数值越⼩,排
列越靠前,默认为
0
![](https://img-blog.csdnimg.cn/direct/64f05f20e1d143139302abc1ae6c94c2.png)
![](https://img-blog.csdnimg.cn/direct/fa27773b388a4313b9d76027483817a4.png)
![](https://img-blog.csdnimg.cn/direct/cfa3f88911a64764bedd2ee6a9d91c26.png)
(2).flex-grow: 1; (把剩余的空间的比例平分)
决定元素的放大比例,
默认为0,即
如果存在剩余空
间,也不放⼤。
![](https://img-blog.csdnimg.cn/direct/f22cf5f51d4049c79064d3fe86bb0f4c.png)
变法:把剩余的空间分四份,给不同的元素不同的份额比例
![](https://img-blog.csdnimg.cn/direct/f07731b254d64cf78a7f0e5c8ac05938.png)
![](https://img-blog.csdnimg.cn/direct/ad7249a25dc440b48bd26e658c6212d0.png)
![](https://img-blog.csdnimg.cn/direct/9b00dff3a5124f2494a9009d830b7eb4.png)
(3).flex-shrink: 1;
决定了元素的
缩⼩
⽐例,默认为1,
即如果空间不⾜,
项⽬将缩⼩。
![](https://img-blog.csdnimg.cn/direct/40a0a4fb0829472ca8c1e697c68de346.png)
![](https://img-blog.csdnimg.cn/direct/bcad59536b28417a8ef1e7d8e0311b8b.png)
eg:这里我们将宽度改成200,得到的元素实际宽度只有166.66就是因为等比例缩小了
扩展用法与放大相同、
(4).align-self: flex-end;
可以使某个元素和其他元素有不一样的对齐方式,
可覆盖
align-items属性。
默认值为auto, 表
示继承⽗元素的
align-items属性
属性值:
auto |
flex-
start |
flex-end
| center
|
baseline
| stretch
;
![](https://img-blog.csdnimg.cn/direct/3d64919b727c491c9616eaf7470a2a01.png)
![](https://img-blog.csdnimg.cn/direct/d9068d6d7d9344ecbc8976131e14b583.png)
(5).
flex-basis :auto;
定义了在分配多余
空间之前,项⽬占
据的主轴空间(main size)。浏
览器根据这个属
性, 计 算主轴是否
有多余空间。它的
默认值为auto,即
项⽬的本来⼤⼩。
(6).
flex:0 1 auto;
flex属性是flex
grow, flex-shrink
和 flex-basis的简
写,默认值为0 1
auto。
后两个属性
可选。
定义了⼦项⽬分配
剩余空间
,flex表 示占
多少份数