非固定定位實(shí)現(xiàn)上下欄布局
1. 前言
除了將上下欄固定在屏幕上,我們還有另一種選擇,那就是上下欄和主盒子都在屏幕的那個(gè)位置不動(dòng),那有人可能會(huì)說了,主盒子里的內(nèi)容要是多了,超出了屏幕的高度該怎么辦呢?這就要用到一個(gè)屬性叫做 overflow-y:
2. 實(shí)現(xiàn)
<!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標(biāo)簽引入中文漸變色 -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/chinese-gradient">
<style>
/* 清除默認(rèn)樣式 */
* { padding: 0; margin: 0; }
/* 令html和body全屏顯示 */
html, body { height: 100% }
/* 上面的那欄 */
.top {
/* 設(shè)置一個(gè)合適的高度 */
height: 10%;
/* 藍(lán)色背景 */
background: var(--靛藍(lán));
}
/* 主顯示區(qū) */
.main {
/* 給個(gè)合適的高度 */
height: 80%;
/* 給個(gè)好看的漸變色 */
background: var(--天藍(lán));
/* 豎直方向的溢出設(shè)置為自動(dòng) */
overflow-y: auto;
}
/* 下面的那欄 */
.bottom {
/* 設(shè)置一個(gè)合適的高度 */
height: 10%;
/* 藍(lán)色背景 */
background: var(--寶石藍(lán));
}
/* 盒子的默認(rèn)樣式 */
div {
font-size: 30px;
color: white;
}
</style>
</head>
<body>
<div class="top"></div>
<div class="main">
這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子
</div>
<div class="bottom"></div>
</body>
</html>
運(yùn)行結(jié)果:
可以看到這個(gè)案例雖然文字撐開了內(nèi)容導(dǎo)致溢出,然后出現(xiàn)滾動(dòng)條可以上下滾動(dòng),但背景色卻沒有變化,這是因?yàn)槲覀兪窃谥骱凶由厦婕拥谋尘吧?br>
這種靠子元素來撐開內(nèi)容的溢出應(yīng)該把樣式全部寫在子元素上面去,父元素只提供一個(gè)高度和一個(gè)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標(biāo)簽引入中文漸變色 -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/chinese-gradient">
<style>
/* 清除默認(rèn)樣式 */
* { padding: 0; margin: 0; }
/* 令html和body全屏顯示 */
html, body { height: 100% }
/* 上面的那欄 */
.top {
/* 設(shè)置一個(gè)合適的高度 */
height: 10%;
/* 藍(lán)色背景 */
background: var(--靛藍(lán));
}
/* 主顯示區(qū) */
.main {
/* 給個(gè)合適的高度 */
height: 80%;
/* 豎直方向的溢出設(shè)置為自動(dòng) */
overflow-y: auto;
}
.child {
height: 1000px;
/* 給個(gè)好看的漸變色 */
background: var(--天藍(lán));
}
/* 下面的那欄 */
.bottom {
/* 設(shè)置一個(gè)合適的高度 */
height: 10%;
/* 藍(lán)色背景 */
background: var(--寶石藍(lán));
}
/* 盒子的默認(rèn)樣式 */
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>
運(yùn)行結(jié)果:
3. 小結(jié)
這里一定要記住這幾個(gè)要點(diǎn):
- 上欄和下欄的寬度加起來要?jiǎng)偤檬瞧聊坏母叨?/li>
- 下欄一定要寫overflow-y: auto
- 下欄的背景什么的最好寫在子元素上,除非你就是想要這種背景不動(dòng)的效果