Flex之前的布局
在使用Flex布局前
我们主要使用以下五点作布局的
-
normal flow(正常流,也叫文档流)
内联元素从左到右,块级元素从上到下 -
float + clear
浮动+清除浮动 -
position relative + absolute
相对定位+绝对定位 -
display : inline-block
做横向布局,例子:导航栏 -
负 margin
小技巧,可以用来产生位移
Flex布局
一种新的布局方式,大概是在CSS3到来时出现的
特点
块级布局侧重垂直方向,行内布局侧重水平方向。
flex布局是与方向无关的flex布局可以实现空间自动分配,元素自动对齐
flexible更加弹性,灵活flex适用于简单的线性布局,更复杂的布局要交给
grid布局
使用方式
- 给父元素加上一个
display : flex; - 给父元素和子元素添加属性
基本概念

- 主尺寸:
main size - 侧尺寸:
cross size - 主轴:
main axis- 主轴起点:
main start - 主轴终点:
main end
- 主轴起点:
- 侧轴:
cross axis- 侧轴起点:
cross start - 侧轴终点:
cross end
- 侧轴起点:
- 所有里面的子元素(项):
flex item - 外面的父元素(容器):
flex container
“flex container”(容器)的属性和值
-
"flex-direction" 方向
"
row"(默认值):从左到右放在一行内显示
"row-reverse":反向放在一行内显示
"column":从上往下每个占一行排列
"column-reverse":反向每个占一行排列
"initial":设置该属性为它的默认值
"inherit":从父元素继承属性
-
"flex-wrap" 换行
"
nowrap"(默认值):不换行
"wrap":换行
"wrap-reverse":反向换行
-
"flex-flow" 方向&换行简写
flex-flow : 方向 换行 ;
-
"justify-content" 主轴方向对齐方式
"
space-between":把空间平均分配在几个"flex item"之间
"space-around":把空间平均分配到几个"flex item"周围
"flex-start":"flex item"都往主轴起点靠
"flex-end":"flex item"都往主轴终点靠
"center":"flex item"都往主轴中间靠
-
"align-items" 侧轴方向对齐方式
"
stretch"(默认值):高度不写死情况下,把所有元素伸展开,和最高的元素一样高
"baseline":文字的"baseline"对齐
"flex-start":"flex item"都往侧轴起点靠
"flex-end":"flex item"都往侧轴终点靠
"center":"flex item"都往侧轴中间靠
-
"align-content" 多行/列内容对齐方式
"
stretch"(默认值):通常意义上的平均分配方案
"space-between":把空间放在行与行之间
"space-around":把空间分配到行与行两边
"flex-start":"flex item"都往侧轴起点靠
"flex-end":"flex item"都往侧轴终点靠
“flex item”(项)的属性和值
-
"flex-grow" 增长比例(空间过多时)
flex-grow: 1 ;
每个项都能写,按写的比例分配空间
-
"flex-shrink" 收缩比例(空间不足时)
flex-shrink: 1 ;
每个项都能写,按写的比例收缩项
-
"flex-basis" 默认大小
flex-basis: 300px ;
每个项都能写,让项变成写的大小
-
"flex" 增长比例&收缩比例&默认大小(缩写)
flex: 1 2 200px;
-
"order" 项的顺序(代替双飞翼)
order: 1 ;
每个项(可以)都写,按写的的顺序排列
-
"align-self" 项的对齐方式
当主轴之类的对齐时,可以改变项的对齐方式来突出