Flex
概念
弹性盒子、弹性布局
优劣势
float、position
- 兼容性好 但 使用繁琐
flex
- 使用方便 但 兼容性略差,移动端使用多
flex重要概念
- 父项:父级元素
- 子项:直接子元素
- 主轴:默认
x轴 - 侧轴:默认
y轴 - 父项属性:作用在父级元素的属性
- 子项属性:作用在直接子元素的属性
父项属性
父项属性主要有 6 个
| 属性 | 含义 |
|---|---|
display | 开启 flex 布局 |
flex-direction | 设置主轴方向,默认为x轴方向 |
justify-content | 置主轴子项的对齐方式 |
align-items | 设置侧轴子项的对齐方式(单行) |
align-content | 设置侧轴子项的对齐方式(多行) |
flex-wrap | 子元素是否换行 |
display属性值 含义 flex开启 flex布局flex-direction属性值 含义 row从左到右(默认) row-reverse从右到左 column从上到下 column-reverse从下到上 justify-content属性值 含义 flex-start左对齐(默认) flex-end右对齐 center水平居中 space-between先左右对齐,剩下的子项再平分剩余空间 space-around子项平分空间 space-evenly行内子项平分间隔 align-item属性值 含义 flex-start上对齐 flex-end下对齐 center垂直居中对齐 align-content属性值 含义 flex-start上对齐 flex-end下对齐 center垂直居中对齐 space-between先上下对齐,剩余的子项平分剩余空间 space-around子项平分空间 flex-wrap属性值 含义 nowrap不换行(默认),子项超过父项宽度会互相挤压 wrap换行
子项属性
子项属性主要包含以下 3 个
| 子项属性 | 含义 |
|---|---|
align-self | 子项自己在侧轴上的对齐方式 |
order | 子项自己在主轴上的排列顺序 |
flex | 子项占用父项的比例 |
align-self属性值 含义 flex-start上对齐 flex-end下对齐 center垂直居中 order属性值 含义 0子项自己在主轴上的排列顺序,默认 0,值越小,子项越靠前flex属性值 含义 1子项自己占用父项的比例 flex: 1是flex-grow、flex-shrink、flex-basis的缩写,默认值是0 1 auto。flex-grow:放大比例,0即不放大flex-shrink:缩小比例,1即空间不足时缩小flex-basis:指定了flex元素在株主轴方向上的初始大小,auto表示参照元素的width和hight
注意项
flex布局中没有 行内、行内块、块元素的概念,可以直接设置宽高- 子项宽度默认由内容撑开,高度与父项高度一致
- 子项添加
float无效,position有效(一般情况下不适合混用) flex可以继续嵌套flex- 父项中的
flex-wrap: wrap会与子项的flex: 1冲突,导致换行无效,只能通过给子项添加宽度来保证换行