
文章目录
弹性盒模型简介
2009年,W3C提出了一种新的盒子模型 ------Flexible Box(伸缩盒模型,又称:弹性盒子)- 它可以轻松的控制:元素分布方式、元素对齐方式、元素视觉顺序 ...
- 截止目前,除了在
部分 IE 浏览器不支持,其他浏览器均已全部支持 - 伸缩盒模型的出现,逐渐演变出了一套
新的布局方案 ------ flex 布局

弹性容器、弹性项目
弹性/伸缩容器: 开启了flex的元素,就是:弹性容器

弹性/伸缩项目:伸缩容器所有子元素自动成为了:弹性项目

主轴与侧轴
主轴: 伸缩项目沿着主轴排列,主轴默认是水平的,默认方向是:从左到右(左边是起点,右边是终点)侧轴: 与主轴垂直的就是侧轴,侧轴默认是垂直的,默认方向是:从上到下(上边是起点,下边是终点)
主轴的方向
-
属性名:
flex-direction -
常用值如下:
1.
row:主轴方向水平从左到右------ 默认值
2.row-reverse:主轴方向水平从右到左
3.column:主轴方向垂直从上到下
4.column-reverse:主轴方向垂直从下到上


主轴换行方式
- 属性名:
flex-wrap - 常用属性值如下:
1. nowrap :默认值,不换行

2. wrap :自动换行,伸缩容器不够自动换行

wrap-reverse:反向换行

补充:
flex-flow是一个复合属性,复合了flex-direction和flex-wrap两个属性。 值没有顺序要求
css
flex-flow: row wrap;
主轴对齐方式
- 属性名:
justify-content - 常用值如下:
| 属性值 | 描述 |
|---|---|
flex-start |
主轴起点对齐。------ 默认值 |
flex-end |
主轴终点对齐 |
center |
主轴居中对齐 |
space-between |
均匀分布,两端对齐(最常用) |
space-around |
均匀分布,两端距离是中间距离的一半 |
space-evenly |
均匀分布,两端距离与中间距离一致 |

侧轴对齐方式
单行的情况
- 属性名:
align-items - 常用值如下:
| 属性值 | 描述 |
|---|---|
flex-start |
侧轴的起点对齐 |
flex-end |
侧轴终点对齐 |
center |
侧轴居中对齐 |
baseline |
伸缩项目的第一行文字的基线对齐 |
stretch |
如果伸缩项目未设置高度,将占满整个容器的高度。------ (默认值)` |

多行的情况
- 属性名:
align-content - 常用值如下:
| 属性值 | 描述 |
|---|---|
flex-start |
与侧轴的起点对齐 |
flex-end |
与侧轴终点对齐 |
center |
与侧轴的中点对齐* |
space-between |
与侧轴两端对齐,中间平均分布 |
space-around |
伸缩项目间的距离相等,比距边缘大一倍 |
space-evenly |
在侧轴上完全平分 |
stretch |
占满整个侧轴。------ 默认值 |
flex-start



伸缩性
基准长度
- .
flex-basis- 概念:
flex-basis设置的是主轴方向的基准长度,会让宽度或高度失效

- 概念:
作用:浏览器根据
flex-basis属性设置的值,计算主轴上是否有多余空间,默认值 auto,即:伸缩项目的宽或高
拉伸项目
-
flex-grow- 概念:
flex-grow定义伸缩项目的放大比例,默认为 0,即:纵使主轴存在剩余空间,也不拉伸(放大) - 规则:
- 若所有伸缩项目的
flex-grow值都为1,则:它们将等分剩余空间(如果有空间的话) - 若三个伸缩项目的
flex-grow值分别为: 1 、 2 、 3 ,则:分别瓜分到: 1/6 、 2/6 、3/6 的空间
- 若所有伸缩项目的
- 概念:
压缩项目
-
flex-shrink- 概念:
flex-grow定义了项目的压缩比例,默认为 1,即:如果空间不足,该项目将会缩小 - 规则:收缩项目的计算,略微复杂一点,我们拿一个场景举例:
- 概念:


flex 复合属性
flex 是复合属性,复合了: flex-grow 、 flex-shrink 、 flex-basis 三个属性,默认值为 0 1 auto
- 如果写
flex:1 1 auto,则可简写为:flex:auto - 如果写
flex:1 1 0,则可简写为:flex:1 - 如果写
flex:0 0 auto,则可简写为:flex:none - 如果写
flex:0 1 auto,则可简写为:flex:0 auto------ 即flex 初始值
扩展属性
order: 属性定义项目的排列顺序。数值越小,排列越靠前,默认为0align-self- 可以
单独调整某个伸缩项目的对齐方式 - 默认值为
auto,表示继承父元素的align-items属性
- 可以
🚵♂️ 博主座右铭:向阳而生,我还在路上!
🚴博主想说:将持续性为社区输出自己的资源,同时也见证自己的进步!
🤼♂️ 如果都看到这了,博主希望留下你的足迹!【📂收藏!👍点赞!✍️评论!】