1 ,position 元素已知宽度
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<style>
div{
width: 900px;
height: 900px;
border: 1px solid red;
margin:0 auto;
position: relative;
}
p{
width: 300px;
height: 300px;
border: 1px solid blue;
position: absolute;
left: 50%;
top:50%;
margin-left: -150px;
margin-top: -150px;
}
</style>
<body>
<div>
<p>123</p>
</div>
</body>
</html>
2 ,position transform 元素未知宽度
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<style>
.box {
background-color: #FF8C00;
width: 300px;
height: 300px;
position: relative;
}
.content {
background-color: #F00;
width: 100px;
height: 100px;
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
}
</style>
<body>
<div class="box">
<div class="content">
</div>
</div>
</body>
</html>
3,flex布局
<div class="box">
<div class="content">
</div>
</div>
.box {
background-color: #FF8C00;
width: 300px;
height: 300px;
display: flex;//flex布局
justify-content: center;//使子项目水平居中
align-items: center;//使子项目垂直居中
}
.content {
background-color: #F00;
width: 100px;
height: 100px;
}
4,table-cell布局
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<style>
.box {
width: 300px;
height: 300px;
display: table;
}
.content {
background-color: red;
display: table-cell;
vertical-align: middle;
text-align: center;
}
.inner {
background-color: blue;
display: inline-block;
width: 20%;
height: 20%;
}
</style>
<body>
<div class="box">
<div class="content">
<div class="inner">
</div>
</div>
</div>
</body>
</html>