flex是Flexible Box的缩写,意为“弹性布局”,用来为盒状模型提供最大的灵活性。
任何一个容器都可以指定为flex布局。
当我们为父盒子设为flex布局以后,子元素的float、clear和vertical-align属性都将失效。
子元素可以横向排列,也可以纵向排列。
flex布局原理简单说就是通过给父盒子添加display:flex 属性,来控制子盒子的位置和排列方式。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
.box{
width: 80%;
height: 300px;
background-color: skyblue;
display: flex;
justify-content: space-around;
}
.box span{
flex: 1;
height: 100px;
background-color:pink;
margin-right: 3px;
}
</style>
</head>
<body>
<div class="box">
<span></span>
<span></span>
<span></span>
</div>
</body>
</html>
常见属性
父容器属性(对父元素设置的)
flex-direction: 设置主轴的方向;
flex-wrap: 设置子元素是否换行;
align-items: 设置侧轴上的子元素排列方式(单行);
align-content: 设置侧轴上的子元素的排列方式(多行);
justify-content: 设置主轴上的子元素排列方式;
flex-flow: 复合属性,相当于同时设置了flex-direction和flex-wrap;
子元素属性
flex-grow: 定义子项目的放大比例,默认为0;
flex-shrink: 定义子项目的缩小比例,默认为1;
flex-basis: 定义了在分配多余空间之前,项目占据的主轴空间,默认为auto;
flex: 子项目占的份数,flex-grow, flex-shrink 和 flex-basis的简写,默认值为0 1 auto,后两个属性可选;
align-self: 控制子项自己在侧轴的排列方式;
order: 定义子项的排列顺序(前后顺序);