非固定定位實現上下欄布局
1. 前言
除了將上下欄固定在屏幕上,我們還有另一種選擇,那就是上下欄和主盒子都在屏幕的那個位置不動,那有人可能會說了,主盒子里的內容要是多了,超出了屏幕的高度該怎么辦呢?這就要用到一個屬性叫做 overflow-y:
2. 實現
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<!-- 在這里用link標簽引入中文漸變色 -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/chinese-gradient">
<style>
/* 清除默認樣式 */
* { padding: 0; margin: 0; }
/* 令html和body全屏顯示 */
html, body { height: 100% }
/* 上面的那欄 */
.top {
/* 設置一個合適的高度 */
height: 10%;
/* 藍色背景 */
background: var(--靛藍);
}
/* 主顯示區 */
.main {
/* 給個合適的高度 */
height: 80%;
/* 給個好看的漸變色 */
background: var(--天藍);
/* 豎直方向的溢出設置為自動 */
overflow-y: auto;
}
/* 下面的那欄 */
.bottom {
/* 設置一個合適的高度 */
height: 10%;
/* 藍色背景 */
background: var(--寶石藍);
}
/* 盒子的默認樣式 */
div {
font-size: 30px;
color: white;
}
</style>
</head>
<body>
<div class="top"></div>
<div class="main">
這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子
</div>
<div class="bottom"></div>
</body>
</html>
運行結果:
可以看到這個案例雖然文字撐開了內容導致溢出,然后出現滾動條可以上下滾動,但背景色卻沒有變化,這是因為我們是在主盒子上面加的背景色。
這種靠子元素來撐開內容的溢出應該把樣式全部寫在子元素上面去,父元素只提供一個高度和一個overflow-y即可:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<!-- 在這里用link標簽引入中文漸變色 -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/chinese-gradient">
<style>
/* 清除默認樣式 */
* { padding: 0; margin: 0; }
/* 令html和body全屏顯示 */
html, body { height: 100% }
/* 上面的那欄 */
.top {
/* 設置一個合適的高度 */
height: 10%;
/* 藍色背景 */
background: var(--靛藍);
}
/* 主顯示區 */
.main {
/* 給個合適的高度 */
height: 80%;
/* 豎直方向的溢出設置為自動 */
overflow-y: auto;
}
.child {
height: 1000px;
/* 給個好看的漸變色 */
background: var(--天藍);
}
/* 下面的那欄 */
.bottom {
/* 設置一個合適的高度 */
height: 10%;
/* 藍色背景 */
background: var(--寶石藍);
}
/* 盒子的默認樣式 */
div {
font-size: 30px;
color: white;
}
</style>
</head>
<body>
<div class="top"></div>
<div class="main">
<div class="child"></div>
</div>
<div class="bottom"></div>
</body>
</html>
運行結果:
3. 小結
這里一定要記住這幾個要點:
- 上欄和下欄的寬度加起來要剛好是屏幕的高度
- 下欄一定要寫overflow-y: auto
- 下欄的背景什么的最好寫在子元素上,除非你就是想要這種背景不動的效果