亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

非固定定位實現呂形布局

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: 90%;

      /* 給個好看的漸變色 */
      background: var(--天藍);

      /* 豎直方向的溢出設置為自動 */
      overflow-y: auto;
    }

    /* 盒子的默認樣式 */
    div {
      font-size: 30px;
      color: white;
    }
  </style>
</head>
<body>
  <div class="top"></div>
  <div class="main">
    這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子這里是主盒子
  </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: 90%;

      /* 豎直方向的溢出設置為自動 */
      overflow-y: auto;
    }

    .child {
      height: 1000px;

      /* 給個好看的漸變色 */
      background: var(--天藍);
    }

    /* 盒子的默認樣式 */
    div {
      font-size: 30px;
      color: white;
    }
  </style>
</head>
<body>
  <div class="top"></div>
  <div class="main">
    <div class="child"></div>
  </div>
</body>
</html>
運行案例 點擊 "運行案例" 可查看在線運行效果

運行結果:
圖片描述

3. 小結

這里一定要記住這幾個要點:

  • 上欄和下欄的寬度加起來要剛好是屏幕的高度;
  • 下欄一定要寫 overflow-y: auto;
  • 下欄的背景什么的最好寫在子元素上,除非你就是想要這種背景不動的效果。