Δ Flex

257 阅读2分钟
简介

Flexbox 布局(又称Flex布局,弹性盒子布局)提供了一个有效地布局与对齐方式,能够使容器分配好子元素之间的空间(子元素大小未知或动态变化情况下仍然可以)

基础知识和术语

flex 容器

flex container

css中 display:flex 的就是创建容器,容器默认是呈现为块状元素,如果容器行呈现为行内元素 dispaly的值设为 inline-flex。容器会控制所有直属子元素,但不控制孙元素。
display: flex;
display: inline-flex;


flex 项

flex items

容器子的直属元素称为项目

轴线

轴线


main-start 主轴开始位置,main-end 主轴结束位置
cross-start 交叉轴开始位置,cross-end 交叉轴结束位置
cross axis 项占据主轴的宽度或高度
cross size 项占交叉轴的宽度或高度


flex项会沿着主轴方向进行排布

flex项会沿着主轴方向进行排布

flex 容器属性

flex-direction【控制主轴方向】

flex-direction 的4个值:从左到右,从右到左,从上到下,从下到上

flex-direction: row;
flex-direction: row-reverse;
flex-direction: column;
flex-direction: column-reverse;


flex-wrap【控制主轴换行】

flex-wrap 的3个值:不换行,换行在第一行在下方,换行在第一行在上方

⚠️注意:使用wrap-reverse时,第一行会紧贴容器底部,而不是紧贴容器顶部
flex-wrap: nowrap;
flex-wrap: wrap;
flex-wrap: wrap-reverse;


flex-flow



justify-content【控制主轴对齐方式】

justify-content 属性的示例

justify-content: flex-start;
justify-content: flex-end;
justify-content: center;
justify-content: space-between;
justify-content: space-around;
justify-content: space-evenly;


align-items【控制交叉轴对齐方式】

align-items 属性的示例


align-items: flex-start;
align-items: flex-end;
align-items: center;
align-items: stretch;
align-items: baseline;


align-content【控制多轴线对齐方式】

align-content 属性的示例

⚠️注意:当只有一行 flex 项时,此属性不起作用

align-content: flex-start;
align-content: flex-end;
align-content: center;
align-content: stretch;
align-content: space-between;
align-content: space-around;


flex 项目属性

order【控制项目在容器中的排列顺序】

flex items order属性的示例

数值越小,排列越靠前,默认为0
order: 0;

flex-grow【定义项目占容器的空间的比例】

flex-grow属性的示例

⚠注意:负值无效
flex-grow: 0;

flex-shrink【定义了项目的缩小比例】

⚠注意:负值无效
默认为1,即如果空间不足,该项目将缩小,如果所有项目的flex-shrink属性都为1,当空间不足时,都将等比例缩小。如果一个项目的flex-shrink属性为0,其他项目都为1,则空间不足时,前者不缩小。
flex-shrink: 0;

flex-basis


flex-basis: 0;

flex【flex-grow, flex-shrink 和 flex-basis的简写】

默认值为0 1 auto。后两个属性可选
该属性有两个快捷值:auto (1 1 auto) 和 none (0 0 auto)。
建议优先使用这个属性


align-self【设置单个项目有与其他项目不一样的对齐方式】

⚠注意:float,clear和vertical-align 对 flex 项没有任何作用
可覆盖align-items属性。为auto时表示继承父元素的align-items属性,如果没有父元素,则等同于stretch。

align-self: auto | flex-start | flex-end | center | baseline | stretch;