下定决心还是再学一遍CSS等前端知识
1. 认识Flex布局和Flex布局的由来
1.1 认识Flex box
- Flexbox翻译为弹性盒子
- 弹性盒子是一种用于按行或者按列布局元素的一维布局方法
- 元素可以膨胀以填充额外的空间,收缩以适应更小的空间
- 通畅我们使用Flexbox来进行布局的方案称之为flex布局(flex layout)
- flex布局是目前web开发中使用最多的布局方案
- flex布局(Flexible布局,弹性布局)
- 目前特别在移动端可以说已经完全普及
- 在PC端也几乎已经完全普及和使用,只有非常少数的网站依然在用浮动来布局
- 为什么需要flex布局
- 长久以来,CSS布局中唯一可靠且跨浏览器兼容的布局工具只有floats和positioning
- 但是这两种方法本身存在很大的局限性,使用他们是无奈之举
1.2 原先布局存在的痛点
- 举例
- 比如在父内容里面垂直居中一个块内容
- "44 years ago we put a man on the moon, but we still can't vertically center things in CSS." -- by Juozas Kaziukenas, 2013-07-21
- 使容器的所有子项等分可用宽度/高度,而不管有多少宽度/高度可用
- 使多列布局中的所有列采用相同的高度,即使他们包含的内容量不同
- 比如在父内容里面垂直居中一个块内容
1.3 Flex布局的出现
-
所以长久以来,大家非常期待一种真正可以用于对元素布局的方案:于是Flex布局出现了
- "Nature and nature's laws lay hid in night; God said "Let Newton be" and was light." -- 牛顿的墓志铭
-
如果担心其兼容性问题
- 可以在CanIuse查询具体的兼容性
2. 两个非常重要的概念
- 开启了flex布局的元素叫 flex container
- flex container里面的直接子元素叫做 flex item
2.1 container
- 设置display属性为flex或者inline-flex可以成为flex container
- flex:flex container以block-level形式存在
- inline-flex:flex container以inline-level形式存在
2.2 flex item
- 当flex container中的子元素变成了flex item的时候,具备以下特点
- flex item的布局将受flex container属性的设置来进行控制和布局
- flex item不再严格区分块级元素和行内级元素
- flex item默认情况下是包裹内容的,但是可以设置宽度和高度
3. Flex布局的模型,坐标轴,主轴和交叉轴

- main axis
- cross axis
4. Flex相关的属性
4.1 应用在flex container上的CSS属性
4.1.1 flex-flow
4.1.2 flex-direction
- 决定main axis的方向
- row 默认值
- row-reverse
- column
- column-reverse
4.1.3 flex-wrap
- nowrap: 默认,单行
- wrap: 多行
- wrap-reverse: 多行,对比wrap,cross start与 cross end相反