flex
display
display 属性定义了一个弹性盒子容器,容器是展现为行内或块状由给定的值决定,此时,它的所有子元素进入 flex文档流,成为伸缩项目。
1 | #flex-container { |
定义行内容器的 flex布局:
1 | #flex-container { |
对于 safiri浏览器,要加上 webkit 前缀:
1 | #flex-container { |
注:CSS的 columns在伸缩容器上没有效果;float、clear和 vertical-align在伸缩项目上没有效果。
flex-direction
flex-direction 定义主轴的方向,有4个值,分别代表了 x轴和 y轴的正方向和反方向。
1 | #flex-container { |
- row:主轴为水平轴,方向从左到右,默认值。
- row-reverse:主轴为水平轴,方向从右到左。
- column:主轴为垂直轴,方向从上到下。
- column-reverse:主轴为垂直轴,方向从下到上。
flex-wrap
flex-wrap定义 item是否换行显示。
1 | #flex-container { |
- nowrap:不换行,默认值。
- wrap:换行,第一行在上方。
- wrap-reverse:换行,第一行在下方。
flex-flow
flex-flow是 flex-direction和 flex-wrap的合并,同时定义了主轴方向和换行方式,默认 row nowrap。
1 | #flex-container { |
justify-content
justify-content定义了 item在主轴上的对齐方式,有剩余空间才起作用。
1 | #flex-container { |
- flex-start:主轴起始方向对齐,默认。
- flex-end:主轴结束方向对齐。
- center:主轴上居中对齐。
- space-between:主轴上两端对齐,第一个item在起始位置,最后一个在结束位置。
- space-around:主轴上等分间距,两边与容器间距是item间距的一半。
- space-evenly:所有间距相等。
align-items
align-items定义了项目在交叉轴上的对齐方式。
1 | #flex-container { |
- flex-start:交叉轴上起始方向对齐。
- flex-end:交叉轴上结束方向对齐。
- center:交叉轴上居中对齐。
- baseline: 交叉轴上项目的第一行文字基线对齐。
- stretch:交叉轴上拉伸对齐。
align-content
当设置为 wrap或 wrap-reverse,项目换行时会出现多根主轴,此时用 align-content设置平行主轴对齐方式。
1 | #flex-container { |
- flex-start:多条平行的主轴在交叉轴的起始位置对齐。
- flex-end:多条平行的主轴在交叉轴的结束位置对齐。
- center:多条平行的主轴在交叉轴上居中对齐。
- space-between:多条平行的主轴在交叉轴上两端对齐,第一条在交叉轴起始位置,最后一条在交叉轴结束位置。
- space-around:多条平行的主轴在交叉轴上等分间距对齐,第一条和最后一条到两端的间距是间距的一半。
- stretch:多条平行的主轴在交叉轴上拉伸对齐,默认。
order
order定义项目在主轴上的排列顺序。数值小的靠前,默认为0.
1 | #flex-item { |
flex-grow
flex-grow定义了项目的放大比例,负值无效。
1 | #flex-item { |
注:值为0时不分配剩余空间。
flex-shrink
flex-shrink定义了缩放比例,默认值auto(项目本来的大小)。
1 | #flex-item { |
flex-basis
flex-basis定义了在分配多余空间前,项目占据的主轴空间。浏览器根据这个属性计算主轴是否有多余空间。默认auto,即项目本来大小。
1 | #flex-item { |
flex
flex是 flex、flex-shrink、flex-basis的简写形式,默认0,1,auto。
align-self
align-self定义了单个 item在交叉轴上的对齐方式。