絕對定位+負(fù)邊距實現(xiàn)居中布局
1. 前言
上一小節(jié)我們講了利用絕對定位來進(jìn)行居中布局。本小節(jié)繼續(xù)講另外一種方法實現(xiàn)居中布局。
但注意,本小節(jié)的"絕對定位+負(fù)邊距"這種方法不適合絕對定位法那種寬百分之多少、高百分之多少這種相對單位,取而代之的是具體的數(shù)值。
2. 實例代碼
比如,這個例子我們設(shè)置居中的盒子寬度為 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>
/* 清除默認(rèn)樣式 */
* { padding: 0; margin: 0; }
/* 令html和body全屏顯示, 并有一個灰色背景 */
html, body { height: 100%; background: gray; }
/* 先在父元素上設(shè)置相對定位 */
body { position: relative }
.center {
/* 絕對定位 */
position: absolute;
/* 上方和左方為50% */
top: 50%;
left: 50%;
/* 給定寬高 */
width: 300px;
height: 200px;
/* 上外邊距為負(fù)的給定高度的一半 */
margin-top: -100px;
/* 左外邊距為負(fù)的給定寬度的一半 */
margin-left: -150px;
/* 白色背景 */
background: white;
}
</style>
</head>
<body>
<div class="center"></div>
</body>
</html>
運(yùn)行結(jié)果:

3. 小結(jié)
top: 50%;和left: 50%;會讓盒子的左上角定位到中央位置;- 所以給上外邊距和左外邊距一個負(fù)值將盒子拉到中央位置;
- margin 的百分比并不是相對于自身,而是相對于父元素的寬度,所以這里不能寫成
-50%; - 此種實現(xiàn)方式兼容性也同樣十分良好。
手撕紅黑樹 ·
2025 imooc.com All Rights Reserved |