flex布局
flex布局(Flexible布局, 弹性布局)
重要概念:
- 开启flex布局的元素叫做 flex container
- flex container 里面的直接子元素叫做 flex items
如何开启flex布局:?
设置display属性为flex或者inline-flex 可以成为flex container
- display: flex 块级元素, flex container 以block-level形式存在
- display: inline-flex 行内元素 , flex container 以inline-level形式存在
flex布局模型:
main axis 主轴
cross axis 交叉轴

flex相关属性
应用在flex container 上的CSS属性
- flex-flow
- flew-direction
- flex-wrap
- justify-content
- align-items
- align-contaent
应用在flex items 上的CSS属性
- flex
- flex-grow
- flex-basis
- flex-shrink
- order
- align-self
flex container相关属性
flew-direction
flex items 默认是沿着main axis(主轴) 从mian start 开始往main end 方向排布
flew-direction属性是决定主轴的方向.有4个属性值
- row (默认) ,主轴从左往右
- row-reverse 主轴从右往左
- column 主轴从上到下
- column-reverse 主轴从下到上
![]()
justify-content
justify-content 决定了 flex items 在 main axis (主轴)上的对齐方式
取值:
- flex-start (默认值), 与main start 对齐
- flex-end 与main end 对齐
- center ; 居中对齐
- space-between:
- flex items 之间的距离相等
- 与main start , main end 两端对齐
- space-evenly
- flex items 之间的距离相等
- flex items 与main start , main end 之间的距离 等于flex items之间的距离
- space-around
- flex items 之间的距离相等
- flex items 与main start , main end 之间的距离 是flex items之间距离的一半
align-items
align-items 决定了flex items 在cross axis (交叉轴)上的对齐方式
属性值为:
- normal: 在弹性布局中,效果与stretch 一样
- stretch : 当flex items 在cross axis 方向的size 为auto时,会自动拉伸至填充flex container
- flex-start : 与 cross start 上对齐
- flex-end : 与 cross end 上对齐
- center: 在交叉轴居中对齐
- baseline: 与基准线对齐
![]()
flex-wrap
flex-wrap 决定flex container 是单行还是多行
属性值:
- nowrap (默认): 单行(如果items宽度大于一行,宽度会被压缩)
- wrap : 多行
- wrap-reverse : 多行(对比wrap, cross start 与 cross end 相反)
![]()
![]()
![]()
flex-flow
flex-flow: <'flex-direction'> || <'flex-wrap'>
align-content
align-content 决定了多行flex items 在cross axis 上的对齐方式,用法与justify-content类似
属性值:
- stretch(默认值) :与align-items 的stretch类似
- flex-start: 与cross start 对齐
- flex-end: 与cross end对齐
- center: 居中对齐
- space-between
- flex items之间的距离相等
- 与cross start. cross end 两端对齐
- space-evenly
- flex items 之间的距离相等
- flex items 与main start , main end 之间的距离 等于flex items之间的距离
- space-around
- flex items 之间的距离相等
- flex items 与main start , main end 之间的距离 是flex items之间距离的一半
flex items相关属性
order
order决定了flex items 的排布顺序
- 可以设置任意整数(正整数, 负整数, 0) ,值越小就越排在前面
- 默认值是0
align-self
flex items 可以通过align-self 覆盖flex container 设置的align-items
- auto(默认值) :遵从flex container 的align-items 设置
- stretch, flex-start. flex-end , center, baseline, 效果与align-items一致
flex-grow
flex-grow 决定了flex items 如何拓展
- 可以设置任意非负数字(正小数, 正整数, 0) ,默认值是0
- 当flex container 是main axis 方向上有剩余size时,flex-grow属性才会有效
- 如果所有flex items 的flex-grow 总和sum超过1, 每个flex item 拓展的size为
- flex container的剩余size * flex-grow / sum
- 如果所有flex items 的flex-grow 总和sum小于1, 每个flex item 拓展的size为
- flex container的剩余size * flex-grow
- flex items 扩展后的最终size不能超过max-width/ max-height
flex-shrink
flex-shrink决定了flex items 如何收缩
- 可以设置任意非负数字(正小数, 正整数, 0) ,默认值是1
- 当flex items是main axis 方向上超过了flex container 的size时,flex-grow属性才会有效
- 如果所有flex items 的flex-shrink总和sum超过1, 每个flex item 收缩的size为
- flex items 超过 flex container的size * 收缩比例 / 所有flex items 的收缩比例之和
- 如果所有flex items 的flex-shrink总和sum小于1, 每个flex item 收缩的size为
- flex items 超出flex container 的size*sum*收缩比例/所有flex items 的收缩比例之和
- 收缩比例 = flex-shrink * flex item的 base size
- base size 就是flex item放入flex container 之前的size
- flex items 收缩后的最终size不能小于min-width/ min-height
flex-basis
flex-basis 用来设置flex items 在main axis 方向上的base size
- auto 默认值,
- 具体的宽度数值(100px)
决定flex items 最终base size 的因素, 从优先级高到低
- max-width\ max-height\ min-widtth\min-height
- flex-basis
- width\height
- 内容本身的size
flex
是flex-grow || flex-shrink || flex-basis 的简写, flex属性可以指定1个 ,2个或者3个值







浙公网安备 33010602011771号