新闻中心
创建可滚动的覆盖层,位于固定头部和底部之间

本文旨在解决如何使用纯CSS创建一个可滚动的覆盖层,该覆盖层位于页面固定头部和动态高度的底部之间,且不与头部和底部重叠。我们将利用`calc()`函数和相对定位,根据视口高度、头部高度和底部高度动态计算覆盖层的最大高度,实现预期的布局效果。
实现原理
核心思想是利用CSS的calc()函数动态计算覆盖层的最大高度。具体来说,覆盖层的最大高度等于视口高度减去头部高度和底部高度。为了确保覆盖层位于底部之内,我们将使用position: relative和bottom: calc(100%)将覆盖层相对于底部定位。
具体步骤
-
HTML结构:
<div class="wrapper"> <div class="header">Header</div> <div class="content"> Long middle content..... </div> </div> <div class="footer"> Footer <a href="#" id="button">Click me</a> <div class="footer-wrapper"> <div id="footer-content">Start of footer content Long footer content.... </div> </div> </div>保持与原HTML结构一致,wrapper包含header, content, footer,footer内部包含footer-wrapper,footer-wrapper内部包含footer-content。
-
CSS样式:
Mureka
Mureka是昆仑万维最新推出的一款AI音乐创作工具,输入歌词即可生成完整专属歌曲。
1091
查看详情
html, body { height: 100%; margin: 0; } .wrapper { height: 100%; display: flex; flex-direction: column; max-height: calc(100vh - 1.5rem); } .header, .footer { padding: 10px; background: silver; } .header { margin-top: 20px; } .content { overflow-y: auto; min-height: 2.5rem; padding: 2.5rem; flex-grow: 1; position: relative; background: pink; } #footer-content { display: none; background: white; padding: 10px; overflow-y: auto; position: absolute; bottom: calc(100%); /* 将footer-content的底部放置在footer的顶部 */ max-height:calc(100vh - 100% - 58px); /* 视口高度 - footer高度 - header高度 */ width: 100%; /* 确保宽度与footer一致 */ } .footer-wrapper { position: relative; /* 相对于footer定位 */ } .footer { position: relative; }关键在于#footer-content的样式:
- position: absolute;:使其可以相对于父元素(.footer-wrapper)进行定位。
- bottom: calc(100%);:将覆盖层的底部与底部的顶部对齐,利用了底部的高度作为计算的基准。
- max-height:calc(100vh - 100% - 58px);:计算覆盖层的最大高度,100vh是视口高度,100%是底部的高度,58px是头部的高度(包含margin-top)。
- overflow-y: auto;:允许内容滚动。
- width: 100%;: 确保宽度与footer一致。 .footer-wrapper的position: relative;是使#footer-content可以相对于它进行绝对定位的关键。
-
J*aScript (jQuery) 保持不变:
$(document).ready(function(){ $('#button').click( function(e) { e.preventDefault(); // stops link from making page jump to the top e.stopPropagation(); // when you click the button, it stops the page from seeing it as clicking the body too $('#footer-content').toggle(); }); $('#footer-content').click( function(e) { e.stopPropagation(); // when you click within the content area, it stops the page from seeing it as clicking the body too }); });这段J*aScript代码负责切换覆盖层的显示和隐藏,以及阻止事件冒泡。
完整示例
<!DOCTYPE html>
<html>
<head>
<style>
body { height: 600px; }
#content { background: salmon; display: none; height: 300px; width: 100%; }
html, body {
height: 100%;
margin: 0;
}
.wrapper {
height: 100%;
display: flex;
flex-direction: column;
max-height: calc(100vh - 1.5rem);
}
.header, .footer {
padding: 10px;
background: silver;
}
.header {
margin-top: 20px;
}
.content {
overflow-y: auto;
min-height: 2.5rem;
padding: 2.5rem;
flex-grow: 1;
position: relative;
background: pink;
}
#footer-content {
display: none;
background: white;
padding: 10px;
overflow-y: auto;
position: absolute;
bottom: calc(100%); /* 将footer-content的底部放置在footer的顶部 */
max-height:calc(100vh - 100% - 58px); /* 视口高度 - footer高度 - header高度 */
width: 100%; /* 确保宽度与footer一致 */
}
.footer-wrapper {
position: relative; /* 相对于footer定位 */
}
.footer {
position: relative;
}
</style>
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script>
$(document).ready(function(){
$('#button').click( function(e) {
e.preventDefault(); // stops link from making page jump to the top
e.stopPropagation(); // when you click the button, it stops the page from seeing it as clicking the body too
$('#footer-content').toggle();
});
$('#footer-content').click( function(e) {
e.stopPropagation(); // when you click within the content area, it stops the page from seeing it as clicking the body too
});
});
</script>
</head>
<body>
<div class="wrapper">
<div class="header">Header</div>
<div class="content">
Long middle content.....
</div>
</div>
<div class="footer">
Footer <a href="#" id="button">Click me</a>
<div class="footer-wrapper">
<div id="footer-content">Start of footer content
Long footer content....
</div>
</div>
</div>
</body>
</html>注意事项
- 确保引入jQuery库,以便使用J*aScript代码。
- 头部
高度和底部高度的计算需要根据实际情况进行调整。 - 如果底部高度是动态变化的,则需要考虑使用J*aScript来动态更新覆盖层的最大高度。
总结
通过结合CSS的calc()函数和相对定位,我们可以创建一个可滚动且位于固定头部和动态底部之间的覆盖层,而无需使用J*aScript来动态计算高度。这种方法简单有效,适用于各种需要类似布局的场景。
以上就是创建可滚动的覆盖层,位于固定头部和底部之间的详细内容,更多请关注其它相关文章!
# 拖拽
# 三水网站优化方案书
# 昆明网站建设公司价格
# wps企业品牌营销推广方案
# 定海区网站优化企业
# 建阳区企业seo公司
# 鼓楼行业网站建设教程
# 信息化seo优化趋势
# 网站建设投资策划
# 福建抖音seo商家推广
# 快捷酒店的营销推广
# 相关文章
# 我们可以
# 这段
# 适用于
# 容器内
# css
# 创建一个
# 自定义
# 复选框
# 相对于
# overf
# 绝对定位
# css样式
# 事件冒泡
# app
# js
# html
# jquery
# java
# javascript
相关栏目:
【
科技资讯46185 】
【
网络学院92790 】
相关推荐:
QQ官网正版登录链接 QQ在线登录入口最新
如何使用Rector自动化升级旧代码_通过Composer安装和配置Rector进行代码重构
Win11怎么用U盘重装系统 Win11制作启动盘并重装系统完整教程【详解】
荒野行动PC版怎么注册_荒野行动PC版账号注册详细流程图文教程
服务端验证_j*ascript输入检查
PrimeNG Sidebar背景色自定义指南:CSS覆盖与主题化实践
必由学官方登录入口 必由学教师学生账号快速访问
《刺客信条4:黑旗》重制版新细节曝光:无缝加载 地图更细致!
Lar*el用户头像管理:实现图片缩放、存储与旧文件安全删除的最佳实践
uc浏览器网页版极速入口 uc网页浏览器网页版流畅体验
Kafka Streams中基于消息头条件过滤消息的实现指南
Python vgamepad库按键模拟:正确使用XUSB_BUTTON常量
自定义Bag-of-Words实现:处理带负号的词汇权重
铁路12306卧铺选择攻略 铁路12306下铺座位预定技巧
php源码怎么看淘宝客系统_看php源码淘宝客系统技巧
“在文档元素之后找到了标记”是什么错误? 检查并修复XML中多个根元素的3个方法
新三国志曹操传110级星符试炼夏侯渊极难攻略
AWS EC2实例间SQL Server连接超时:安全组配置与故障排除指南
Sublime Text怎么设置垂直标尺_Sublime配置Rulers规范代码长度
优化Log4j2控制台输出性能:解决异步日志瓶颈
Linux如何排查内存不足OOME问题_LinuxOOM分析教程
蛙漫2台版漫画地址 Manwa2正版网页版链接
神经网络二分类模型训练异常:高损失与完美验证准确率的排查与修正
网站内容防复制粘贴的实现策略与局限性
解决Rails应用中内容错位与Turbo警告:meta标签误用导致富文本渲染异常
Win10怎么设置静态IP地址 Win10手动配置IP地址步骤【指南】
火锅吃太多会怎样 火锅吃太多会上火吗
如何在离线环境中使用Composer_Composer离线安装依赖包的技巧与策略
顺丰快件物流信息 官方网站查询入口
Win11网速慢怎么解决 Win11网络设置优化解除限速
如何在低配置电脑上搭建轻量级J*a环境_占用更小的环境选择技巧
顺丰国际快递查询 国际件官方查询入口
树莓派传感器触发:通过Twilio API发送WhatsApp消息教程
Python Socket多播通信中指定源IP地址的实践指南
Django表单验证失败时保留用户输入数据的最佳实践
必由学官方网站入口 必由学学生教师共用登录通道
vivo浏览器怎么扫描二维码 vivo浏览器内置扫一扫功能使用方法
TikTok国际版官网直达_TikTok国际版官网直达进入在线观看
Highcharts 雷达图径向轴标签定制指南:利用多Y轴实现数值标注
如何解决电商平台定制报价请求的“黑洞”问题,SprykerQuoteRequest模块助你提升客户体验与销售效率
解决Bootstrap卡片顶部边距导致背景图下移的问题
解决macOS上安装pyhdf时‘hdf.h’文件缺失的编译错误
php源码怎么在电脑上测试_电脑测试php源码方法步骤【教程】
58动漫网在线官方网 58动漫网正版动漫入口网址
照顾宝贝2小游戏点击立即在线玩
深入理解J*aScript Promise异步执行与微任务队列
深入理解J*a链表中的IPosition接口与使用
mysql密码锁定怎么解锁_mysql密码锁定解锁后修改密码步骤
中兴BladeV30怎样用测距估书架层高_iPhone中兴BladeV30测距估书架层高【家装参考】
双系统安装时,如何设置默认启动系统? msconfig命令了解一下!


2025-11-01
浏览次数:次
返回列表
高度和底部高度的计算需要根据实际情况进行调整。