1.利用绝对定位+transform(不固定宽高水平垂直居中)
示例:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>居中</title>
<style>
#box {
position: relative;
width: 500px;
height: 400px;
background: #faebcc;
}
#child {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%);
}
</style>
</head>
<body>
<div id="box">
<div id="child">Hello world</div>
</div>
</body>
</html>
效果:
2.利用绝对定位+margin(.child宽高固定)
示例:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>居中</title>
<style>
#box {
position: relative;
width: 500px;
height: 400px;
background: #faebcc;
}
#child {
position: absolute;
top: 50%;
left: 50%;
width: 100px;
height: 80px;
background: #999999;
margin: -40px 0 0 -50px;/*负值取宽、高的一半*/
}
</style>
</head>
<body>
<div id="box">
<div id="child">Hello world</div>
</div>
</body>
</html>
效果:
3.利用定位与margin:auto
示例:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>居中</title>
<style>
#box {
position: relative;
width: 500px;
height: 400px;
background: #faebcc;
}
#child {
position: absolute;
width: 100px;
height: 80px;
background: #DDDDDD;
top: 0; right: 0; bottom: 0; left: 0; margin: auto;
}
</style>
</head>
<body>
<div id="box">
<div id="child">Hello world</div>
</div>
</body>
</html>
效果:
4.利用display:table-cell
CSS中有一个用于竖直居中的属性vertical-align,但只有当父元素为td或者th时,这个vertical-align属性
才会生效,对于其他块级元素,例如 div、p等,默认情况下是不支持vertical-align属性的,设置块级元素的
display类型为table-cell,激活vertical-align属性,但display:table-cell存在兼容性问题,
所以这种方法没办法跨浏览器兼容。
示例:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>居中</title>
<style>
#box {
display: table-cell;
vertical-align: middle;/*垂直*/
text-align: center;/*水平*/
width: 500px;
height: 400px;
background: #faebcc;
}
#child {
display: inline-block;
width: 100px;
height: 80px;
background: #f65f57;
}
</style>
</head>
<body>
<div id="box">
<div id="child">Hello world</div>
</div>
</body>
</html>
效果:
5.页面居中
方法一:
示例:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>居中</title>
<style>
#child {
width:100px;
height:100px;
background:aqua;
position:absolute;
top:0;
left:0;
right:0;
bottom:0;
margin:auto;
}
</style>
</head>
<body>
<div id="child">Hello world</div>
</body>
</html>
效果:
方法二:
示例:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>居中</title>
<style>
#child {
width:100px;
height:100px;
background:aqua;
position:absolute;
top:50%;
left:50%;
margin-left:-50px;
margin-bottom:-50px;
}
</style>
</head>
<body>
<div id="child">Hello world</div>
</body>
</html>
效果:
方法三:
示例:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>居中</title>
<style>
#child {
background:aqua;
position: absolute;
width: 6em;
height: 6em;
top: calc(50% - 3em);
left: calc(50% - 3em);
}
</style>
</head>
<body>
<div id="child">Hello world</div>
</body>
</html>
效果:
方法四:
示例:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>居中</title>
<style>
#child {
background: #999999;
position: absolute;
top:50%;
left:50%;
transform:translate(-50% -50%);
}
</style>
</head>
<body>
<div id="child">Hello world</div>
</body>
</html>
效果: