水平垂直布局有很多种方式,这里只讲几种最常见,也是最常用到的四种,分别有flex布局、绝对定位、table布局、grid布局;
一.flex布局
父元素设置diaplay: flex;align-items: center; justify-content: center;
父元素设置display: flex;子元素设置margin:auto;
<div class="parent1">
<div class="child1">水平垂直居中1</div>
</div>
<div class="parent2">
<div class="child2">水平垂直居中2</div>
</div>
<style>
.parent1 {
width: 200px;
height: 200px;
border: 1px solid;
display: flex;
align-items: center;
justify-content: center;
}
.child1 {
background: red;
}
.parent2 {
width: 200px;
height: 200px;
border: 1px solid;
display: flex;
}
.child2 {
background: red;
margin: auto;
}
</style>
二.绝对定位
父元素设置position: relative;子元素设置position: absolute;
<div class="parent">
<div class="child">水平垂直居中</div>
</div>
<style>
.parent {
width: 200px;
height: 200px;
border: 1px solid;
display: block;
position: relative;
}
.child {
background: red;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%,-50%);
}
</style>
三.table布局
父元素设置display: table;vertical-align: middle; text-align:center;
<div class="parent">
<div class="child">水平垂直居中</div>
</div>
<style>
.parent {
width: 200px;
height: 200px;
border: 1px solid;
display: table-cell;
vertical-align: middle;
text-align: center;
}
.child {
background: red;
display: inline-block;
}
</style>
四.grid布局
grid布局和flex布局相似
<div class="parent1">
<div class="child1">水平垂直居中1</div>
</div>
<div class="parent2">
<div class="child2">水平垂直居中2</div>
</div>
<style>
.parent1 {
width: 200px;
height: 200px;
border: 1px solid;
display: grid;
align-items: center;
justify-content: center;
}
.child1 {
background: red;
}
.parent2 {
width: 200px;
height: 200px;
border: 1px solid;
display: grid;
}
.child2 {
background: red;
margin: auto;
}
</style>