絕對定位實現(xiàn)居中布局
1. 前言
居中布局通常分為兩種,一種是固定寬高,另一種是非固定寬高。
固定寬高很好理解,非固定寬高通常都是靠里面的內(nèi)容來撐起盒子的高度,內(nèi)容時多時少。
這兩種方式也造就了不一樣的技術(shù)實現(xiàn),我們來看一下。
2. 實例代碼
假如我們有一個寬度占 70%,高度占 25% 的盒子,我們可以這么寫:
<!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; }
/* 先在父元素上設(shè)置相對定位 */
body { position: relative }
.center {
/* 絕對定位 */
position: absolute;
/* 上下左右全部為0 */
top: 0;
right: 0;
bottom: 0;
left: 0;
/* 給定寬高 */
width: 70%;
height: 25%;
/* 令外邊距自動填充 */
margin: auto;
/* 白色背景 */
background: white;
}
</style>
</head>
<body>
<div class="center"></div>
</body>
</html>
運行結(jié)果:
代碼說明:
- 如果不給定寬高,盒子將會和父元素一樣大,因為絕對定位上下左右都是 0,意為緊貼著父元素的邊。
- 給了固定寬高,但沒寫 margin 的話盒子會固定在左上角,因為 top 和 left 的優(yōu)先級更高。
- 給了 margin: auto; 的話,瀏覽器會自動填充邊距,令其居中。
- 此種實現(xiàn)方式優(yōu)點是兼容性很好,幾乎沒用到任何 CSS 的新特性,全部都是經(jīng)典屬性。
3. 小結(jié)
學會了絕對定位來進行居中之后,下一小節(jié)我們再來看一下絕對定位怎么和外邊距進行搭配。