flex-direction决定了主轴方向,主轴定完了,交叉轴也就定完了
justify-content(to box)
- 假设主轴已经是横向的定完了
- justify-content就是用手去横向如何拨动这串珠子
align-items(to box)
- 假设主轴已经是横向的定完了
- align-items就是如何纵向拨动这串珠子
align-self(to item)
- 假设主轴已经是横向的定完了
- 交叉轴方向如何拨动珠子也选择了top,也就是都在顶部
- 那么如何对某一颗特别有想法的珠子让它到底部呢?
- align-self默认是auto即 每颗珠子都继承自box的align-items,这点很好理解
flex布局与margin-xxx:auto 实现水平居中
container属性与item属性
flex布局只有两类属性,一类是container属性一类是item属性
containter属性只需要记住一下这些最常用的即可:
display:flex;
flex-direction:row/column;
flex-wrap:wrap;
justify-content:center/space-between;
align-items:center;
flex基础
flex-grow与flex-shrink
- flex-grow常用于在浏览器宽度拓宽时导航栏中几块区域的item的增长的快慢程度
- flex-grow:1 常用于设置中间区域拿到整行空余宽度的所有宽度,宽度最大化
- flex-shrink用于控制当浏览器宽度在缩小时导航栏中几块区域的item被挤压的快慢程度
- flex-shrink要求item本身是定宽的
flex属性与flow属性都是复合属性
复合的原因是子属性通常结合出现相使用
- flex:grow shrink basis 三者相结合 flex-MDN
- flow:flex-direction flex-wrap 二者相结合
- flex-direction决定了主轴方向
- flex-wrap决定了副轴方向
flex青蛙小游戏
flex做的综合案例
- 如果想用flex去做平均布局的话要注意,如果是一行item数多于2,就要做特殊处理了
- 不能仅仅是简单粗暴的对父元素
justify-content:space-between - 因为要考虑到最后一行item数凑不满的话space-between就丑了 代码示例
inline-flex
- inline-flex是写在父元素上的
- 可以让父元素的宽度做到最小,包裹住内层
- 居中的逻辑是我一层层包住里面,一对一的包住的同时就已居中了
- 因此只要保证最里面的宽高即可
- inline-flex就是让父元素变成具有inline属性的flex
- inline-flex很容易实现层层包住里面的居中对齐