作者:阮一峰
一、Flex布局是什么?
Flex是Flexible Box的缩写,意为“弹性布局”,用来为盒状模型提供最大的灵活性。
任何一个容器都可以指定为Flex布局。
.box{
display:flex;
}
行内元素也可以使用Flex布局。
.box{
display:inline-flex;
}
Webkit内核的浏览器,必须加上-webkit
前缀
.box{
display:-webkit-flex;/*safari*/
display:flex;
}
注意,设为Flex布局以后,子元素的float
、clear
和vertical-align
属性将失效。
二、基本概念
采用flex布局的元素,称为flex容器,简称“容器”。它的所有子元素自动成为容器成员,称为flex项目(flex item),简称“项目”。
容器默认存在两根轴,水平的主轴(main axis)和垂直的交叉轴(cross axis)。主轴的开始位置(与边框的交叉点)叫做main start
,结束位置叫做main end
;交叉轴的开始位置叫做cross start
,结束位置叫做cross end
。
项目默认沿主轴排列。单个项目占据的主轴空间叫做main size
,占据的交叉空间叫做cross size
。
三、容器的属性
以下6个属性设置在容器上。
- flex-direction
- flex-wrap
- flex-flow
- justify-content
- align-items
- align-content
flex-direction属性
flex-direction
属性决定主轴的方向(即项目的排列方向)
.box{
flex-direction:column-reverse|column|row|row-reverse
}
它可能有4个值。
- row(默认值):主轴为水平方向,起点在左端。
- row-reverse:主轴为水平方向,起点在右端
- column:主轴为垂直方向,起点在上沿。
- column-reverse:主轴为垂直方向,起点在下沿。
flex-wrap属性
默认情况下,项目都排在一条线上(又在“轴线”)上。flex-wrap
属性定义,如果一条轴线排不下,如何换行。
.box{
flex-wrap:nowrap|wrap|wrap-reverse
}
他可能取三个值。
(1)nowrap
(默认),不换行。
(2)wrap
:换行,第一行在上方。
(3)wrap-reverse
:换行,第一行在下面。