给弹性容器(父盒子)添加
当我们需要使用flex布局时候,我们可以给需设置flex的盒子(弹性盒子)它的父盒子(弹性容器)添加disply:flex;
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
.box {
width: 600px;
height: 400px;
background-color: pink;
}
.box div {
width: 100px;
height: 100px;
background-color: red;
}
</style>
</head>
<body>
<div class="box">
<div>1</div>
<div>2</div>
<div>3</div>
<div>4</div>
</div>
</body>
</html>
这是我们使用flex布局前的效果
如果我们想要,box盒子里的子盒子水平垂直居中,我们可以给.box父盒子设置flex.
display: flex;
justify-content: center;
align-items: center;
仅仅3行代码,我们就可以实现子盒子的水平和垂直居中效果.如果是普通的方式来实现这个效果,往往是比较复杂的.我们需要使用position和transform: translate();才可以实现.(父盒子一定要有高度和宽度,否则设置样式不会生效)
为什么我称flex布局为弹性布局呢?
因为设置flex布局后.盒子会在一行显示,且不会主动换行.如果子盒子没有设置高度,那么子盒子的高会弹性到铺满父盒子.顾名思义弹性盒子.而这种布局就称为弹性布局.但是我们可以通过flex-wrap: wrap;来强制弹性盒子换行.并且我们可以通过align-content: ;来设置多行盒子的侧轴对齐样式.用法与align-items相似.
接下来是flex布局相关的一些属性和属性值.
圣杯布局
左右固定,中间自适应
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
* {
padding: 0;
margin: 0;
box-sizing: border-box;
}
.box {
display: flex;
width: 100%;
height: 50px;
background-color: pink;
}
.left,
.right {
width: 50px;
background-color: red;
}
.center {
flex: 1;
}
</style>
</head>
<body>
<div class="box">
<div class="left"></div>
<div class="center"></div>
<div class="right"></div>
</div>
</body>
</html>
这是比较常见的移动端布局