父元素设置text-align: center
。
设置margin: 0 auto;
要求:
- 单行文本
实现方法:
单行文本的行高等于父级的height
,即可实现垂直居中。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>
#wrapper{
width: 500px;
height: 500px;
background: blue;
}
#wrapper p{
line-height: 500px; /*行高=父级的height,垂直居中*/
text-align: center; /*水平居中*/
}
</style>
</head>
<body>
<div id="wrapper">
<p>这是一段要垂直水平居中的文字!</p>
</div>
</body>
</html>
要求:
- 采用绝对定位方法对页面布局没有影响
- 子元素高度已知
实现方法
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>
#wrapper{
position: fixed; /*父级*/
width: 500px;
height: 500px;
background-color: blue;
}
#content{
width: 80%;
height: 40%; /*已知的高度*/
position: absolute; /*子级用绝对定位*/
top: 50%; /*先定位到50%的位置*/
left: 50%;
margin-top: -20%; /*往上提本身高度的一半*/
margin-left: -40%;
background-color: red;
}
</style>
</head>
<body>
<div id="wrapper">
<div id="content">垂直水平居中</div>
</div>
</body>
</html>
要求:
- 绝对定位
优点:
- 子元素高度不需要已知
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>
#wrapper {
width: 500px;
height: 500px;
position: relative;
background: blue;
}
#content {
width: 300px;
height: 200px;
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
margin: auto;
background-color: yellow;
}
</style>
</head>
<body>
<div id="wrapper">
<div id="content">水平垂直居中</div>
</div>
</body>
</html>
要求:
- 子元素高度已知
实现方法:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>
#wrapper{
background: blue;
width: 500px;
height: 500px;
text-align: center;
overflow: hidden;
}
#null{
width: 100%;
height: 50%; /*负责填充父级元素50%的高度*/
}
#content {
width: 300px;
height: 200px; /*已知高度*/
margin: -100px auto 0 auto; /*往上提本身高度的一半*/
background-color: yellow;
}
</style>
</head>
<body>
<div id="wrapper">
<div id="null"></div>
<div id="content">水平垂直居中</div>
</div>
</body>
</html>
要求:
- 子元素高度已知
实现方法:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>
#wrapper {
height: 250px;
background: blue;
}
#null {
height: 50%;
width: 100%;
margin-bottom: -50px;
}
#content {
height: 100px;
background-color: yellow;
}
</style>
</head>
<body>
<div id="wrapper">
<div id="null"></div>
<div id="content">水平垂直居中</div>
</div>
</body>
</html>
要求:
- 子元素高度已知
实现方法:
子元素(height
+margin
+border
+padding
) = 父元素height
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>
#wrapper {
height: 200px;
padding: 300px 0;
background: blue;
}
#content {
width: 100%;
height: 100px;
padding: 50px 0;
background-color: yellow;
}
</style>
</head>
<body>
<div id="wrapper">
<div id="content">水平垂直居中</div>
</div>
</body>
</html>