在刚开始学习前端时我们的布局采用的传统的html+css(float)的标准的布局,在进行设置页面表示时比较复杂,耗时,但是采用Flex布局的化就可以比较容易的设置容器(写入display:flex)和项目(即相应的子元素)的结构
1.flex的基本介绍
![](https://img-blog.csdnimg.cn/img_convert/c00b0dccb1d3d3ce49d11466e01a8cd7.jpeg)
2.flex常用父属性
![](https://img-blog.csdnimg.cn/img_convert/46e875b248fb37bef35a969992d58e51.jpeg)
2.1 flex-direction属性:设置主轴的方向
![](https://img-blog.csdnimg.cn/img_convert/a4db4356b8c38b0d3534c25d86a22ec5.jpeg)
2.2 justify-content:设置主轴的子元素的排列方式
![](https://img-blog.csdnimg.cn/img_convert/9ff6582d11922ed7f2d2deb25c1fbb0f.jpeg)
2.3 flex-wrap:当元素超过body(即当前浏览器最大宽度)的宽度时是否换行,如果不换行的话即会改变原来盒子的宽度以及文字会压缩成垂直排列
![](https://img-blog.csdnimg.cn/img_convert/84b28472391cb8e533ee10e22a40fedf.jpeg)
2.4 flex-flow:复合属性的写法(是flex-direction 和flex-wrap的复合写法)
![](https://img-blog.csdnimg.cn/img_convert/61148b3e1728e721394c664d430bbb65.jpeg)
2.5 align-item(子元素的侧轴排列方式)
![](https://img-blog.csdnimg.cn/img_convert/05c612e8de3abcf75e2d9da510163fa1.jpeg)
这里需要注意这个strech的用法(其它的从字面意思就可以理解):它是拉伸到侧轴的最大高度
2.6 align-content:多行的子元素设置布局
![](https://img-blog.csdnimg.cn/img_convert/8d1294b2a415c7d6d5b9546e69747d1d.jpeg)
这里的stretch属性个人理解即为对应的先将第一个子元素放在侧轴靠顶端然后系统根据计算空的空间进行等值分配(即相应的子元素在侧轴的间隔相等)
2.7 align-item和align-content的区别
![](https://img-blog.csdnimg.cn/img_convert/b48a5d19d55e7952fcadd58962a36442.jpeg)
3.其他常用控制子元素属性
![](https://img-blog.csdnimg.cn/img_convert/e90e673d9883ef391ca17ec0f32858e7.jpeg)
![](https://img-blog.csdnimg.cn/img_convert/68209fd527cd7006ac42986ea354c640.jpeg)
下面这个属性为实际开发中的一个流式布局中常用属性
![](https://img-blog.csdnimg.cn/img_convert/9a1f2e8153026b098be56a5d3ee635b4.jpeg)
实际开发中当我们需要进行当屏幕的变化时一些元素的大小也就行变化时,就要结合body的宽度来进行分配相应的现在的宽度