flex布局
开启flex布局
display:flex (独占一行)
inline-flex(允许换行)
应用在flex container上的css属性
1、flex-flow 是flex-direction || flex-warp的简写
2、flex-direction 设置主轴(main axis)的方向
3、flex-wrap 设置能否换行
4、justify-content 设置flex items在main axis上的对齐方式
5、align-items 设置flex items在cross axis上的对齐方式(一般针对单行)
6、align-content 设置flex items在cross axis上的对齐方式(一般针对多行)
应用在flex items上的css属性
1、flex 是flex-grow flex-shrink?||flex-bassis的简写
2、flex-grow 决定了flex items在main axis方向上如何扩展
3、flex-basis 设置flex items在main axis方向上的base size
4、flex-shrink 决定了flex items在main axis如何收缩
5、order设置flex items的排布顺序
6、align-self 允许flex items覆盖flex container 设置的align-items
flex container的属性:
row(默认值):从左向右
row-reverse:从右向左
column:从上到下
column-reverse:从下到上
justify-content: 决定了 flex items在主轴(main axis)上的对齐方式
flex-start(默认值):与main start 对齐
flex-end:与main end 对齐
center:居中对齐
space-between: flex items之间的距离相等. 与main start,mian end两端对齐
space-evenly:flex items之间的距离相等. item与mian start,mian end之间的距离等于flex item之间的距离
space-around: flex items之间的具体相等
align-items 决定了flex item在cross axis上的对齐方式
flex-start:与cross start对齐
flex-end:与cross end对齐
center:居中对齐
baseline:与基准线对齐
flex-wrap 决定了单行还是多行
nowrap(默认):单行
wrap:多行
wrap-reverse:多行(对比wrap,cross start 与cross end相反)
flex-flow是 flex-direction || flex-warp的缩写
flex-flow: colum wrap 等价于
flex-direction:column
flex-wrap:wrap
flex-flow: row-reverse 等价于
flex-direction:row-reverse
flex-wrap:nowrap
align-content 决定了多行flex items在cross axis 上的对齐方式,用法和justify-content类似
stretch(默认值):与align-items的stretch类似 在cross axis上拉伸
flex-start:与cross start对齐
flex-end:与cross end对齐
center:居中对齐
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-shrink 决定了flex items如何收缩
可以设置任意非负数字(正小数,正整数,0),默认值是1
当flex items在main axis方向上超过了flex container的size,flex-shrink属性才会有效
每个flex item收缩的size为
flex items超出flex container的size * 收缩比例/所有flex items的收缩比例之和
收缩比例 = flex - shrink * flex item的base size
base size 就是flex item 放入flex container之前的size
flex items收缩后的最终size不能小于 min-width\min-height
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综合不超过1,每个flex item扩展的size为
flex container 的剩余size * flex-grow
flex items 扩展后的最终size不能超过max-width\max-height
举例:flex-direction为row的情况下 父容器宽度 400px 有三个子容器宽度均为100,
flex-grow分别为1,2,3
这样可以得出
A的宽度= 100 * (1/6) + 100 = 116.66
B的宽度 = 100 * (2/6) + 100 = 133.33
C的宽度 = 100 * (3/6) + 100 = 150
若 flex-grow分别为 0.1 ,0.2,0.3,则结果为:
A的宽度= 100 * 0.1 + 100 = 110
B的宽度 = 100 * 0.2 + 100 = 120
C的宽度 = 100 * 0.3 + 100 = 130
flex-shrink 决定了 flex items 如何收缩
可以设置任意非负数组(正小数,正整数,0),默认值是1
当flex items在main axis方向上超过了flex container 的size,flex-shrink属性才会有效
每个flex item 收缩的size为
flex items超出flex container 的size * 收缩比例/所有flex items的收缩比例之和
收缩比例 = flex-shrink * flex item的base size
base size就是flex item 放入 flex container之前的size
flex item收缩后的最终size不能小于min-width\min-height
举例:总容器宽度 500px 一共六个子视图,
宽度分别为110,120,130,140,150,160,
shrink为1,2,3,4,5,6,
总长度:110+120+130+140+150+160 = 810
总共得收缩的长度:810 - 500 = 310
收缩比例 是 flex-shrink * item的 主轴方向的size
sum = 110 * 1 + 120 * 2 + 130 * 3 + 140 * 4 + 150 * 5+ 160 * 6
item1的收缩比例是 110 * 1 需要收缩的具体为 310 * (110 * 1)/sum
item2的收缩比例是 120 * 1 需要收缩的具体为 310 * (120 * 2)/sum
item3的收缩比例是 130 * 1 需要收缩的具体为 310 * (130 * 3)/sum
item4的收缩比例是 140 * 1 需要收缩的具体为 310 * (140 * 4)/sum
item5的收缩比例是 150 * 1 需要收缩的具体为 310 * (150 * 5)/sum
item6的收缩比例是 160 * 1 需要收缩的具体为 310 * (160 * 6)/sum
flex-basis
设置flex items在 main axis方向的base size
auto(默认值) content 取决于内容本身的size
决定flex-item最终base size 的因素 优先级从高到低
max-width max-height min-width min-height
flex-basis
width height
内容本身的size
flex-basis 0
flex-group 1
联合使用的效果:
flex是flex-grow flex- shrink? || flex-basis
默认值是0 1 auto
none: 0 0 auto