前言
这也算是面试中比较常见的题目了,脑子里快速过一下,各位掘友能想起来多少种?
能想起来超过三种的。
少于三种的,看下面我为你整理好的方案,收藏起来,用到时直接CV。
让div垂直水平居中
分两种情况来看,就是div定宽高/不定宽高
<!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>
.parent {
display: flex;
}
.child {
margin: auto;
}
</style>
</head>
<body>
<div class="parent" style="height: 400px">
<div class="child" style="width: 200px; height: 200px; background-color: aqua"></div>
</div>
<div class="parent" style="height: 400px">
<div class="child" style="background-color: aqua">
<p>123456789</p>
</div>
</div>
</body>
</html>
div定宽高/不定宽高都可以
- display: flex; + margin: auto;
.parent{
display: flex;
}
.child{
margin: auto;
}
- display: flex; + align-items: center; + justify-content: center;
.parent{
display: flex;
align-items: center;
justify-content: center;
}
3.display: grid; + align-items: center; + justify-content: center;
.parent{
display: grid;
align-items: center;
justify-content: center;
}
- position + transform
.parent{
position: relative;
}
.child{
background-color: aqua;
position: absolute;
transform: translate3d(-50%, -50%, 0);
left: 50%;
top: 50%;
}
只支持div定宽高
- position + margin
.parent{
position: relative;
}
.child{
background-color: aqua;
position: absolute;
margin-left: -150px;
margin-top: -150px;
left: 50%;
top: 50%;
}
- position + top + left
.parent{
position: relative;
}
.child{
width: 200px;
height: 200px;
position: absolute;
top: calc(50% - 100px);
left: calc(50% - 100px);
background-color: aqua;
}
总结
献上脑图,拿走不谢!