Flex 布局
讲在前面的话:你好,我是itchao,欢迎来到我关于flex布局的笔记整理,该文章如有问题敬请指正。写该文章目的有两个,其一是记录整理Flex相关知识点,其二是希望能帮助更多的人。笔记整理自:阮一峰的网络日志:Flex 布局教程 :语法篇,谢谢阮一峰大神的优质文章,让我学到了很多知识,想了解更多 Flex 布局,可直接访问该链接。
1. Flex 布局基本概念
- Flex 布局(弹性布局)
- 采用 Flex 布局的元素,称为 Flex 容器。Flex 容器的所有子元素,称为 Flex 项目
- 容器默认两个轴:水平的主轴和垂直的交叉轴
- 主轴:main start 开始位置 (左侧),main end 结束位置(右侧)
- 交叉轴:cross start 开始位置(头部),cross end 结束位置(底部)
- 项目默认沿主轴排列,即水平方向排列
2. 容器属性
- 容器属性共6个
-
flex-direction
-
作用:决定主轴方向(即项目排列方向)
-
可选参数:
row(默认值):主轴为水平方向,起点在左端row-reverse:主轴为水平方向,起点在右端column:主轴为垂直方向,起点在上沿column-reverse:主轴为垂直方向,起点在下沿
-
-
flex-wrap
-
作用:决定换行方式(一行排不完的情况)
-
注意:默认情况中,项目都排列在一条轴线
-
可选参数:
nowrap(默认):不换行wrap:换行,第一行在上方wrap-reverse:换行,第一行在下方
-
-
flex-flow
- 作用:
flex-direction和flex-wrap的简写 - 默认值:
row nowrap
- 作用:
-
justify-content
-
作用:决定项目在主轴上对齐方式
-
可选参数:具体对齐方式由主轴方向决定 ( flex-direction 可改变主轴方向 ) 。下面假设主轴为从左到右
flex-start(默认值):左对齐(开始位置 main start)flex-end:右对齐(结束位置 main end)center: 居中对齐space-between:两端对齐,项目之间的间隔都相等space-around:每个项目两侧的间隔相等(项目与项目间隔 = 项目与边框间距的2倍)
-
-
align-items
-
作用:决定项目在交叉轴上对齐方式
-
可选参数:具体对齐方式由交叉轴方向决定 ( 主轴改变后交叉轴即改变 ) 。下面假设交叉轴从上到下
flex-start:上对齐(开始位置 cross start)flex-end:下对齐(结束位置 cross end)center:居中对齐baseline: 项目的第一行文字的基线对齐stretch(默认值):如果项目未设置高度或设为auto,将占满整个容器的高度
-
-
align-content
-
作用:决定多根轴线的对齐方式。
-
注意:如果项目只有一根轴线,该属性不起作用
-
可选参数:
flex-start:交叉轴的起点对齐flex-end:交叉轴的终点对齐center:交叉轴的中点对齐space-between:交叉轴两端对齐,轴线之间的间隔平均分布space-around:每根轴线两侧的间隔都相等。所以,轴线之间的间隔比轴线与边框的间隔大一倍stretch(默认值):轴线占满整个交叉轴
-
3. 项目属性
- 项目属性共6个
-
order- 作用:决定项目的排列顺序
- 特点:数值越小,排列越靠前
- 注意:默认值为0
-
flex-grow-
作用:决定项目的放大比例
-
特点:
- 若所有项目 flex-grow 都为1,当有剩余空间时,则等分剩余空间
- 若一个项目 flex-grow 为2,其他项目 flex-grow 为1,则前者占据剩余空间是后者的2倍
-
注意:默认值为0,即如果存在剩余空间,也不放大
-
-
flex-shrink-
作用:决定项目的缩小比例
-
特点:
- 若所有项目的
flex-shrink都为1,当空间不足时,则都等比例缩小 - 若一个项目的
flex-shrink属性为0,其他项目flex-shrink都为1,则空间不足时,前者不缩小
- 若所有项目的
-
注意:
- 默认值为1,即若空间不足时,该项目将缩小
- 负值对该属性无效
-
-
flex-basis-
作用:决定在分配多余空间前,项目占据的主轴空间(main size)
-
注意:
- 浏览器根据这个属性,计算主轴是否有多余空间
- 默认值为
auto,即项目的本来大小 - 可以设为
width或height属性一样的值(如200px),则项目将占据固定空间
-
-
flex-
作用:
flex-grow,flex-shrink和flex-basis的简写 -
注意:
- 默认值为
0 1 auto。后两个属性可选值 - 该属性有两个快捷值:
auto(1 1 auto) 和 none (0 0 auto) - 建议优先使用该属性,因为浏览器会自动推算相关值
- 默认值为
-
-
align-self-
作用:允许单个项目有与其他项目不一样的交叉轴对齐方式,可覆盖
align-items属性 -
注意:默认值为
auto,表示继承父元素的align-items属性,如果没有父元素,则等同于stretch -
可选参数:具体对齐方式由交叉轴方向决定 ( 主轴改变后交叉轴即改变 ) 。下面假设交叉轴从上到下
auto:继承父元素的align-items属性,如果没有父元素,则等同于stretchflex-start:上对齐(开始位置 cross start)flex-end:下对齐(结束位置 cross end)center:居中对齐baseline: 项目的第一行文字的基线对齐stretch(默认值):如果项目未设置高度或设为auto,将占满整个容器的高度
-
写在最后的话:希望这篇文章能帮助你了解些 Flex 相关知识,下篇文章见!
自我谏言:
- 不要自我怀疑!
- 不要自我设限!
- 好好踏实努力!
- 成为更好的人!
俗话说目标是灯塔,而这是我的灯塔:我一定要成为非常优秀的前端开发工程师!争取早日成为全栈大佬!
itchao
2021年12月23日15:07:42