總結記錄一下常常須要用到垂直居中佈局,歡迎補充(空手套。。。O(∩_∩)O)css
如下栗子若是未特別標註同一使用這樣的html結構html
<div class="container">
<div class="content"></div>
</div>
複製代碼
絕對定位能夠很容易作到top:50%,如今只要再讓目標元素上移自身高度的一半就垂直居中了css3
.container {
background: #777777;
height: 400px;
position: relative;
}
.container .content {
width: 100px;
height: 100px;
position: absolute;
top: 50%;
margin-top: -50px;
left: 50%;
margin-left: -50px;
background: #ee5f28;
}
複製代碼
優勢:兼容性好 缺點:須要知道居中元素的高度瀏覽器
.container {
background: #777777;
height: 400px;
position: relative;
}
.container .content {
width: 100px;
height: 100px;
position: absolute;
top: 50%;
left: 50%;
transform: translate3d(-50%, -50%, 0);
background: #ee5f28;
}
複製代碼
.container {
background: #777777;
height: 400px;
position: relative;
}
.container .content {
width: 100px;
height: 100px;
position: absolute;
top: calc(50% - 50px);
left: calc(50% - 50px);
background: #ee5f28;
}
複製代碼
.container {
background: #777777;
height: 400px;
display: flex;
justify-content: center;
align-items: center;
}
.container .content {
width: 100px;
height: 100px;
background: #ee5f28;
}
複製代碼
.container {
background: #777777;
height: 400px;
display: flex;
}
.container .content {
width: 100px;
height: 100px;
background: #ee5f28;
margin: auto;
}
複製代碼
.container {
background: #777777;
height: 400px;
position: relative;
}
.container .content {
width: 100px;
height: 100px;
background: #ee5f28;
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
margin: auto;
}
複製代碼
優勢:佈局
.container {
background: #777777;
height: 400px;
text-align: center;
font-size: 0;
overflow: auto;
}
.container::after {
content: '';
display: inline-block;
height: 100%;
vertical-align: middle;
}
.container .content {
display: inline-block;
vertical-align: middle;
width: 100px;
height: 100px;
background: #ee5f28;
}
複製代碼
這裏注意
:容器‘container’裏要設置font-size:0;避免inline-block之間產生間隔測試
優勢:flex
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<style> .container-table { background: #777777; height: 400px; width: 100%; display: table; } .container-table .container-cell { display: table-cell; vertical-align: middle;/* 這裏達到了垂直居中的效果 */ } .container-table .container-cell .content { width: 100px; height: 100px; margin: 0 auto;/* 利用margin值 水平居中*/ background: #ee5f28; } </style>
</head>
<body>
<div class="container-table">
<div class="container-cell">
<div class="content"></div>
</div>
</div>
</body>
</html>
複製代碼