Flex是
flexible box
的简称,纯粹用来布局的属性html
flex
和inline-flex
任何容器均可以知道为Flex布局,块级元素使用
display: flex;
;行内元素使用inline-flex
浏览器
容器使用Flex布局后,子元素的float
、clear
和verticle-align
属性将失效布局
采用Flex布局的元素, 称为
flex container
容器。容器内的子元素自动成为flex container
的成员,称为flex-item
flex
flex-item
的排列方向是main axis
:即flex-direction
指定主轴是水平或是垂直ui
容器默认存在水平主轴main axis
和垂直的交叉轴cross axis
spa
main axis
:flex-item
排列的方向是主轴3d
cross axis
:与主轴垂直的是交叉轴code
主轴的开始和结束位置:main start
和main end
htm
交叉轴的开始和结束位置:cross start
和cross end
blog
flex-item
在主轴与交叉轴占据的空间:main size
和cross size
flex container
的属性须要在
flex container
上设置的属性有6个:
flex-direction
:row
| row-reverse
| column
| column-reverse
。默认值为row
row
(默认值):主轴是水平方向,flex-item
水平排列,main start
在左端
row-reverse
:主轴是水平方向,flex-item
水平排列,main start
在右端
column
:主轴是垂直方向,flex-item
垂直排列,main start
在上边沿
column-reverse
:主轴是垂直方向,flex-item
垂直排列,main start
在下边沿
flex-wrap
:nowrap
| wrap
| wrap-reverse
。默认状况下,flex-item
都排在一条轴线上;flex-wrap
属性定义若是在一条轴线上排不下,换行的规则。
nowrap
(默认值):不换行
wrap
:换行,第一行排在上方
wrap-reverse
:换行,第一行排在下方
flex-flow
:是flex-direction
和flex-wrap
的简写,默认值为row nowrap
flex-flow: <flex-direction> && <flex-wrap>
justify-content
:定义flex-item
在主轴main-axis
上的对齐方式
justify-content: flex-start | flex-end | center | space-between | space-around
。五个取值与主轴方向有关
flex-start
(默认值):左对齐;flex-end
右对齐;center
居中;
space-between
:两端对其,flex-item
间的间隔距离相等
space-around
:每一个flex-item
两侧的间隔相等,至关于设置左右margin
值相等。
align-items
:定义flex-item
在交叉轴的对其方式
align-items: flex-start | flex-end | center | baseline | strecth
。五个取值与交叉轴方向有关
flex-start
交叉轴起点对其;
baseline
:flex-item
的第一行文字的基线对齐
stretch
(默认值):若是flex-item
没有设置高度或者值为auto
,将占满整个容器高度
align-content
:若是容器内出现多跟轴线(即出现wrap
),定义主轴在交叉轴上的对齐方式,只有一根轴线时不起做用
align-content: flex-start | flex-end | center | space-between | space-around | stretch
stretch
(默认值):轴线沾满整个交叉轴
space-between
:与交叉轴两端对齐,轴线间的间隔平均分布
space-around
:每根轴线两侧的间隔相等
flex-start
:与交叉轴起点对其
flex-item
的属性在
flex-item
上设置的属性一样是6个:
order: <integer>;
: 定义flex-item
在主轴上的排列顺序。数值越小,排列越靠前,默认值为0。
flex-grow: <number>
:定义flex-item
在主轴上的放大比例。默认值为0
:即便存在剩余空间(宽度),也不放大。
若是全部flex-item
的flex-grow
属性值都是1
,表示它们均分剩余空间(若是有)
若是一个flex-item
属性值为2
,其他为1
:前者占据的空间是后者的2
倍
flex-shrink: <number>
:定义flex-item
在主轴上的缩小比例。默认值为1
,即若是空间不足,该flex-item
会缩小。
若是全部flex-item
的flex-shrink
属性值都为1
,在空间不足时,都将等比例缩小
flex-shrink
为0
的flex-item
在空间不足时,不会缩小。
flex-basis: <length> | auto
:定义在分配剩余空间前,flex-item
占据主轴的空间main size
。默认值为auto
,表示flex-item
原本的大小。
浏览器根据这个属性计算是否存在多余空间
若是width
和height
值固定为绝对长度单位(如350px),该flex-item
占据固定空间
flex
属性:是flex-grow
、flex-shrink
和flex-basis
三个属性的简写,默认值为0 1 auto
两个快捷值:none
表示(0 0 auto
);auto
表示(1 1 auto
)
建议优先使用属性值,而非先单独写三个分离的属性(浏览器会自动推算相关值)
align-self
:容许单个flex-item
与其余flex-item
在交叉轴有不一样的对齐方式,能够覆盖掉align-items
的值
align-items: auto| flex-start | flex-end | center | baseline | strecth
默认值为auto
:表示继承父元素的align-items
属性
没有父元素状况下等同于stretch