1

需求

  • 页面分为顶部、内容区、底部(bottom)
  • 内容区垂直滚动
  • 当内容区内容少时,bottom在页面最底部(类似固定定位)
  • 当内容区内容多时,bottom跟在内容区后方(要滚动到底才能看到bottom)

效果图

内容少时

内容多时

解决方案

  • 弹性盒垂直方向控制
  • 两端分布即可(space-between)
  • 不要用js去控制bottom的style是否固定在最底部,重绘性能不好,css控制即可

代码

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        * {
            margin: 0;
            padding: 0;
        }

        body {
            height: 100vh;
            overflow: hidden;
        }

        .up {
            height: 60px;
            line-height: 60px;
            background-color: #999;
            text-align: center;
        }

        .down {
            height: calc(100% - 60px);
            background-color: pink;
            overflow-y: auto;
            /* 两端弹性盒分布即可 */
            display: flex;
            flex-direction: column;
            justify-content: space-between;
        }

        .content {
            /* 高度由内容撑开 */
        }

        .bottom {
            height: 48px;
            line-height: 48px;
            text-align: center;
            background-color: #baf;
        }
    </style>
</head>

<body>
    <div class="up">
        我是top
    </div>
    <div class="down">
        <div class="content">
            <h1>哈哈哈</h1>
            <h1>哈哈哈</h1>
            <h1>哈哈哈</h1>
            <h1>哈哈哈</h1>
            <!-- <h1>哈哈哈</h1>
            <h1>哈哈哈</h1>
            <h1>哈哈哈</h1>
            <h1>哈哈哈</h1>
            <h1>哈哈哈</h1>
            <h1>哈哈哈</h1>
            <h1>哈哈哈</h1>
            <h1>哈哈哈</h1>
            <h1>哈哈哈</h1>
            <h1>哈哈哈</h1>
            <h1>哈哈哈</h1>
            <h1>哈哈哈</h1>
            <h1>哈哈哈</h1>
            <h1>哈哈哈</h1> -->
        </div>
        <div class="bottom">
            我是bottom
        </div>
    </div>
</body>

</html>
范例记录一下,以防忘记

水冗水孚
1.1k 声望585 粉丝

每一个不曾起舞的日子,都是对生命的辜负