Open innerWang opened 5 years ago
<div class="parent">
<div class="child"></div>
</div>
.parent{
border: 1px solid red;
height: 300px;
position:relative;
}
.child {
border: 1px solid green;
height: 50px;
width:50px;
position: absolute;
top: 50%;
left: 50%;
transform:translate(-50%,-50%);
}
<div class="parent">
<div class="child"></div>
</div>
.parent{
border: 1px solid red;
height: 300px;
position:relative;
}
.child {
border: 1px solid green;
height: 50px;
width:50px;
position: absolute;
top: 0; // 只需要`top = bottom` +` margin:auto` 则可实现垂直居中
left: 0; // 只需要`left = right` +` margin:auto` 则可实现水平居中
right:0;
bottom:0;
margin:auto;
}
<div class="parent">
<div class="child"></div>
</div>
.parent{
border: 1px solid red;
height: 300px;
position:relative;
}
.child {
border: 1px solid green;
height: 50px;
width:50px;
position: absolute;
top: 50%;
left: 50%;
margin-top:-25px; //此处若使用百分比,是指父元素尺寸的百分比
margin-left:-25px;
}
使用 ::after / ::before + vertical-align+ display:inline-block
<div class="parent">
<div class="child"></div>
</div>
.parent{
border: 1px solid red;
height: 300px;
text-align:center;
}
.child { border: 1px solid green; height: 50px; width:50px;
display: inline-block; vertical-align: middle; }
.parent::after{ display:inline-block; content:''; height:100%; vertical-align: middle; }
6: 使用table标签
<table class="parent">
<tr>
<td class="child">aaaaaaaaaa</td>
<td class="child">aaaaaaaaaa</td>
</tr>
</table>
.parent{
border: 1px solid red;
height: 300px;
}
.child {
border: 1px solid green;
}
使用 display: table table-cell 和 vertical-align
<div class="parent">
<div class="child">aaaaaaaaaa</td>
</div>
.parent{
border: 1px solid red;
height: 300px;
display:table;
}
.child{ border: 1px solid blue;
display:table-cell; vertical-align: middle; }
1: 使用flex