- IE浏览器正式停用了, 公司对低版本浏览器的要求也不严格了
- 以前为了有更好的兼容性, 一直在使用老的语法, 对新语法掌握不足
- 在以前的工作中弹性盒布局用的比较少, 今天就来学习一下使用方法
Flex 布局是什么
- 我们经常会提到盒模型, 其实 CSS 的布局方式和盒模型是分不开的
- 我们通常会通过
display
控制盒子的类型, 设置为弹性布局也是一样的, 即: display: flex;
or display: inline-flex;
- 设为 Flex 布局以后,子元素的
float
、clear
和vertical-align
属性将失效。
基本概念

- 容器默认存在两根轴:水平的主轴(main axis)和垂直的交叉轴(cross axis)。
- 主轴的开始位置(与边框的交叉点)叫做
main start
,结束位置叫做main end
;
- 交叉轴的开始位置叫做
cross start
,结束位置叫做cross end
。
- 项目默认沿主轴排列。单个项目占据的主轴空间叫做
main size
,占据的交叉轴空间叫做cross size
。
容器的属性

- flex-direction (设置主轴)
- flex-wrap (换行方式)
- flex-flow (
flex-direction
和 flex-wrap
的简写)
- justify-content (主轴对齐方式)
- align-items (交叉轴对齐方式)
- align-content (多个主轴时, 在交叉轴方向的对齐方式)
- 以上6个属性是容器自身的属性。
- 在谷歌浏览器中会有上图的面板, 即便没有用过也可以根据图形的示例设置(ps: 可能是因为这个导致我现在还不知道 flex 都有什么用法)
- 虽然工具很好用, 但是我们也应该了解一下他的具体用法, 我们接着往下看
flex-direction
主轴的方向(排列方向)

flex-direction: row | row-reverse | column | column-reverse;
row
(默认值):主轴为水平方向,起点在左端。
row-reverse
:主轴为水平方向,起点在右端。
column
:主轴为垂直方向,起点在上沿。
column-reverse
:主轴为垂直方向,起点在下沿。
flex-wrap
排不下如何换行

flex-wrap: nowrap | wrap | wrap-reverse;
nowrap
:不换行, 位置不够时挤压子容器
wrap
:换行
wrap-reverse
:换行, 第一行在最下面。
flex-flow
(flex-direction
和 flex-wrap
的简写)
/* flex-flow: <flex-direction> || <flex-wrap>; */
flex-flow: column-reverse wrap;
justify-content
设置主轴对齐方式

justify-content: flex-start | flex-end | center | space-between | space-around;
flex-start
(默认值):左对齐
flex-end
:右对齐
center
: 居中
space-between
:两端对齐,项目之间的间隔都相等。
space-around
:每个项目两侧的间隔相等。所以,项目之间的间隔比项目与边框的间隔大一倍。
align-items
设置交叉轴对齐方式(和主轴类似)

align-items: flex-start | flex-end | center | baseline | stretch;
flex-start
:交叉轴的起点对齐。
flex-end
:交叉轴的终点对齐。
center
:交叉轴的中点对齐。
baseline
: 项目的第一行文字的基线对齐。
stretch
(默认值):如果项目未设置高度或设为auto,将占满整个容器的高度。
align-content
多个主轴时在交叉轴上的对齐方式
- 多根轴线的对齐方式。如果项目只有一根轴线,该属性不起作用。

align-content: flex-start | flex-end | center | space-between | space-around | stretch;
flex-start
:与交叉轴的起点对齐。
flex-end
:与交叉轴的终点对齐。
center
:与交叉轴的中点对齐。
space-between
:与交叉轴两端对齐,轴线之间的间隔平均分布。
space-around
:每根轴线两侧的间隔都相等。所以,轴线之间的间隔比轴线与边框的间隔大一倍。
stretch
(默认值):轴线占满整个交叉轴。
子容器属性
小结
flex-direction
(设置主轴)
flex-wrap
(换行方式)
flex-flow
(flex-direction
和 flex-wrap
的简写)
justify-content
(主轴对齐方式)
align-items
(交叉轴对齐方式)
align-content
(多个主轴时, 在交叉轴方向的对齐方式)
参考文档