絕對定位+負邊距實現(xiàn)居中布局
1. 前言
上一小節(jié)我們講了利用絕對定位來進行居中布局。本小節(jié)繼續(xù)講另外一種方法實現(xiàn)居中布局。
但注意,本小節(jié)的"絕對定位+負邊距"這種方法不適合絕對定位法那種寬百分之多少、高百分之多少這種相對單位,取而代之的是具體的數(shù)值。
2. 實例代碼
比如,這個例子我們設置居中的盒子寬度為 300px、高度為 200px:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
/* 清除默認樣式 */
* { padding: 0; margin: 0; }
/* 令html和body全屏顯示, 并有一個灰色背景 */
html, body { height: 100%; background: gray; }
/* 先在父元素上設置相對定位 */
body { position: relative }
.center {
/* 絕對定位 */
position: absolute;
/* 上方和左方為50% */
top: 50%;
left: 50%;
/* 給定寬高 */
width: 300px;
height: 200px;
/* 上外邊距為負的給定高度的一半 */
margin-top: -100px;
/* 左外邊距為負的給定寬度的一半 */
margin-left: -150px;
/* 白色背景 */
background: white;
}
</style>
</head>
<body>
<div class="center"></div>
</body>
</html>
運行結果:
3. 小結
top: 50%;
和left: 50%;
會讓盒子的左上角定位到中央位置;- 所以給上外邊距和左外邊距一個負值將盒子拉到中央位置;
- margin 的百分比并不是相對于自身,而是相對于父元素的寬度,所以這里不能寫成
-50%
; - 此種實現(xiàn)方式兼容性也同樣十分良好。