nicepainkiller 2019-06-27
传统的布局解决方案,基于盒模型,通过 css
中的display
属性 + position
属性 + float
属性。它对于那些特殊布局非常不方便,比如,垂直居中就不容易实现。
概念
flex
布局float
/clear
/vertical-align
属性将会失效主轴和交叉轴
main axis
和垂直的交叉轴cross axis
flex-container
容器属性
flex-direction
决定主轴的方向(同时也是flex-item的排列方向)
row
(默认值):主轴是水平方向,flex-item水平从左往右排列column
: 主轴呈垂直方向,从上边沿向下排列reverse
参数: 将起始与终点进行互换flex-wrap
属性定义如果在一条轴线上排不下,换行的规则
nowrap
(默认值):不换行
- `wrap` : 自然换行 直接将多余的元素从下一行开始排列 - `wrap-reverse`: 将第一行排列到下方
flex-flow
是flex-direction
和flex-wrap
的简写,默认值为row
nowrap
justify-content
:定义flex-item在主轴main-axis
上的对齐方式
flex-start
(默认值):左对齐;flex-end
右对齐;center
居中;space-between
:两端对其,flex-item间的间隔距离相等space-around
:每个flex-item两侧的间隔相等,相当于设置左右margin
值相等align-items
: 定义flex-item
在交叉轴的对齐方式
align-content:如果容器内出现多跟轴线(即出现wrap),定义主轴在交叉轴上的对齐方式,只有一根轴线时不起作用
align-content: flex-start | flex-end | center | space-between | space-around | stretchstretch
(默认值):轴线沾满整个交叉轴space-between
:与交叉轴两端对齐,轴线间的间隔平均分布space-around
:每根轴线两侧的间隔相等flex-start
:与交叉轴起点对其flex-item
项目的属性
flex-grow属性定义项目的放大比例,默认为0,即如果存在剩余空间,也不放大.
如果所有项目的flex-grow属性都为1,则它们将等分剩余空间(如果有的话)。如果一个项目的flex-grow属性为2,其他项目都为1,则前者占据的剩余空间将比其他项多一倍。
flex 属性是flex-grow, flex-shrink 和 flex-basis的简写,默认值为0 1 auto。后两个属性可选
> flex: none | [ <'flex-grow'> <'flex-shrink'>? || <'flex-basis'> ]
align-self属性允许单个项目有与其他项目不一样的对齐方式,可覆盖align-items属性。默认值为auto,表示继承父元素的align-items属性,如果没有父元素,则等同于stretch。
> align-self: auto | flex-start | flex-end | center | baseline | stretch;