1.flex布局与传统布局的优缺点
1.1 传统布局
优点:兼容性好,能很好的PC端上显示。
缺点:布局非常繁琐,费力不讨好。有局限性,在移动端上不能很完美的显示。
1.2 flex布局
优点:布局简单且在移动端上应用广泛。
缺点:PC端上的支持情况较差,IE 11或很低的版本,不支持或部分支持。
2.flex布局原理
2.1 布局原理
flex 是flexible Box的缩写,用来为盒子提供最大的灵活性,任何的盒子都可以指定为flex布局。
父盒子设为flex布局之后,子元素中的float clear vertical-align属性将会失效。
总结:通过给父盒子添加flex属性,(方法:display:flex ) 来控制其中子元素的位置和排列方式。
3.flex布局父级常见属性
3.1常见父级属性
1. flex-direction:设置主轴方向------设置容器中的子元素在容器的那个方向上堆叠
3.1.1 设置为column值时子元素在flex容器中沿着y轴方向堆叠(从上到下)
<style>
*{
margin: 0;
padding: 0;
list-style: none;
}
.flex{
margin-left: 50px;
width: 300px;
height: 200px;
display:flex ;
flex-direction: column;
border: 1px solid black;
}
div li {
width: 100px;
height: 50px;
background-color: rgb(0, 119, 255);
border: 1px solid black;
margin: 10px;
}
</style>
</head>
<body>
<div class="flex">
<li></li>
<li></li>
<li></li>
</div>
</body>
3.1.2 设置为row值时子元素在flex容器中沿着x轴方向堆叠(从左到右,默认为row)
.flex{
margin-left: 50px;
width: 300px;
height: 200px;
display:flex ;
flex-direction: row;
border: 1px solid black;
}
3.1.3 column-reverse值时子元素在flex容器中沿着y轴方向堆叠(从下到上);设置为
row-reverse值时子元素在flex容器中沿着x轴方向堆叠(从右到左)。
2.设置主轴上子元素的排列属性:justify-content
3.2.1 justify-content: center 子级元素在flex容器主轴的中心对齐
.flex{
margin-left: 50px;
width: 300px;
height: 200px;
display:flex ;
flex-direction: row;
justify-content: center;
border: 1px solid black;
}
3.2.2 justify-content: flex-start 子级元素在flex容器主轴的开头对齐
.flex{
margin: 50px 50px;
width: 300px;
height: 200px;
display:flex ;
flex-direction: row;
justify-content: flex-start;
border: 1px solid black;
}
justify-content: flex-end 子级元素在flex容器主轴的末端对齐
3.2.3 justify-content:space-around 子级元素在flex容器主轴上先居中对齐,两边的子元素在平分两边剩余空间
3.2.4 justify-content: space-between 子级元素在flex容器主轴两边的子元素紧贴flex容器,中间元素居中
3.设置侧轴上子元素的排列属性:align-items
3.3.1 align-items:center 子级元素在flex容器侧轴中心对齐(相当于垂直居中)
3.3.2 align-items:flex-start 子级元素在flex容器顶部对齐
align-items:flex-end 子级元素在flex容器尾部对齐
3.3.3 align-items :stretch 拉伸子元素
3.3.4 align-items :baseline 使flex项目基线对齐
4.设置侧轴对齐弹性线 :align-content
3.4.1 align-content:space-between 适用于多行使上下之间的距离相等
5.设置是否换行属性:flex-wrap
值为 wrap 自动换行 on-wrap 不换行(默认值) wrap-reverse 以相反的方向换行