- 第一种:利用定位实现
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0,user-scalable=no">
<title>元素未知宽高实现元素水平垂直居中</title>
<style>
* {
padding: 0;
margin: 0;
}
#wrap {
background-color: skyblue;
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
width: 400px;
height: 400px;
margin: auto;
}
</style>
</head>
<body>
<div id="wrap"></div>
</body>
</html>
- 第二种:利用定位和transform属性
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0,user-scalable=no">
<title>元素未知宽高实现元素水平垂直居中</title>
<style>
* {
padding: 0;
margin: 0;
}
#wrap {
background-color: skyblue;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
width: 400px;
height: 400px;
}
</style>
</head>
<body>
<div id="wrap"></div>
</body>
</html>
- 第三种:利用flex弹性布局
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0,user-scalable=no">
<title>元素未知宽高实现元素水平垂直居中</title>
<style>
* {
padding: 0;
margin: 0;
}
html,
body {
width: 100%;
height: 100%;
}
body {
width: 100%;
height: 100%;
display: flex;
align-items: center;
justify-content: center;
}
#wrap {
background-color: skyblue;
width: 400px;
height: 400px;
}
</style>
</head>
<body>
<div id="wrap"></div>
</body>
</html>
- 第四种:利用百分比布局
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0,user-scalable=no">
<title>元素未知宽高实现元素水平垂直居中</title>
<style>
* {
padding: 0;
margin: 0;
}
html,
body {
width: 100%;
height: 100%;
}
#wrap {
background-color: skyblue;
margin-left: calc(50% - 200px);
margin-top: calc(50% - 200px);
width: 400px;
height: 400px;
}
</style>
</head>
<body>
<div id="wrap"></div>
</body>
</html>