需求
- 页面分为顶部、内容区、底部(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>
范例记录一下,以防忘记
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。