粘性页眉和页脚可滚动内容

2024-07-04

我正在尝试创建一个包含三个 div 的页面:页眉、页脚和内容区域。这些应该占据 100% 的屏幕。

页眉和页脚很小并且不会改变,内容区域可以是任意大小,所以我添加了overflow:auto当它变得太大时使其滚动。

问题是,它溢出了屏幕的高度。我创建了一个小提琴来演示:https://jsfiddle.net/tdxn1e7p/ https://jsfiddle.net/tdxn1e7p/

我使用以下 CSS 来设置 html 和 body 高度,因此height:100% trick https://stackoverflow.com/q/6654958/483779在容器上将起作用:

html, 
body {
    height: 100%;
}

我的文档的结构是:

<div style="height:100%;">
  <div>
    Header content
  </div>
  <div style="overflow:auto;">
    Body content... this could be very long
  </div>
  <div>
    Footer content
  </div>
</div>

我发现这类问题有很多变体,例如这个问题 https://stackoverflow.com/q/2174311/483779,但无法使任何答案对我有用。


方法 1 - 弹性盒

它对于已知和未知的高度元素都非常有效。确保将外部 div 设置为height: 100%;并重置默认值margin on body。请参阅浏览器支持表 http://caniuse.com/#feat=flexbox.

jsFiddle https://jsfiddle.net/2kh20Lsz/

html, body {
  height: 100%;
  margin: 0;
}
.wrapper {
  height: 100%;
  display: flex;
  flex-direction: column;
}
.header, .footer {
  background: silver;
}
.content {
  flex: 1;
  overflow: auto;
  background: pink;
}
<div class="wrapper">
  <div class="header">Header</div>
  <div class="content">
    <div style="height:1000px;">Content</div>
  </div>
  <div class="footer">Footer</div>
</div>

方法 2 - CSS 表

对于已知和未知的高度元素。它也适用于包括 IE8 在内的旧版浏览器。

jsFiddle https://jsfiddle.net/6x6t02ke/

html, body {
  height: 100%;
  margin: 0;
}
.wrapper {
  height: 100%;
  width: 100%;
  display: table;
}
.header, .content, .footer {
  display: table-row;
}
.header, .footer {
  background: silver;
}
.inner {
  display: table-cell;
}
.content .inner {
  height: 100%;
  position: relative;
  background: pink;
}
.scrollable {
  position: absolute;
  left: 0; right: 0;
  top: 0; bottom: 0;
  overflow: auto;
}
<div class="wrapper">
  <div class="header">
    <div class="inner">Header</div>
  </div>
  <div class="content">
    <div class="inner">
      <div class="scrollable">
        <div style="height:1000px;">Content</div>
      </div>
    </div>
  </div>
  <div class="footer">
    <div class="inner">Footer</div>
  </div>
</div>

方法 3 -calc()

如果页眉和页脚是固定高度,则可以使用CSScalc() http://caniuse.com/#feat=calc.

jsFiddle https://jsfiddle.net/ao8jqabh/

html, body {
  height: 100%;
  margin: 0;
}
.wrapper {
  height: 100%;
}
.header, .footer {
  height: 50px;
  background: silver;
}
.content {
  height: calc(100% - 100px);
  overflow: auto;
  background: pink;
}
<div class="wrapper">
  <div class="header">Header</div>
  <div class="content">
    <div style="height:1000px;">Content</div>
  </div>
  <div class="footer">Footer</div>
</div>

方法 4 - 全部百分比

如果页眉和页脚的高度是已知的,并且它们也是百分比,那么您只需进行简单的数学计算,使它们加在一起等于 100% 的高度。

html, body {
  height: 100%;
  margin: 0;
}
.wrapper {
  height: 100%;
}
.header, .footer {
  height: 10%;
  background: silver;
}
.content {
  height: 80%;
  overflow: auto;
  background: pink;
}
<div class="wrapper">
  <div class="header">Header</div>
  <div class="content">
    <div style="height:1000px;">Content</div>
  </div>
  <div class="footer">Footer</div>
</div>

jsFiddle https://jsfiddle.net/kqhj2s3p/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

粘性页眉和页脚可滚动内容 的相关文章

  • 使用 sed 提取 HTML 标签数据

    我希望提取已知 HTML 标签之间的数据 例如 Hello i I i am i very i glad to meet you 应该变成 I very 所以我找到了一些几乎可以做到这一点的东西 不幸的是 它只提取最后一个条目 sed n
  • 如何获取所有行值制表符?

    我有使用制表器的可编辑表格 一切正常 但问题是单击 保存按钮 时无法获取所有行值 我正在尝试的是 document ready function var tabledata id 1 name Oli Bob age 12 col red
  • PHP 字符串中的 JavaScript 数组

    我正在开发一个具有数千个值的应用程序 我正在尝试用 JavaScript 创建一个动态数组 我正在使用 AJAX 来获取我的值 所以我必须从 PHP 创建一个字符串 它应该能够在 JavaScript 中从字符串转换为数组 如何在 PHP
  • 如何在 Javascript 中的警报/确认框中显示图像?

    如何在警告框或确认框显示图像 我一直在尝试使用下面的代码 但在警报框中获取图像网址 请任何人帮助我解决问题 或者如果不可能 请给出任何其他建议 var image document getElementById myImage src ha
  • 当 flex-direction 为“column”时,CSS flex-basis 不起作用

    我的目标是使用 Flexbox 创建一个两列布局 其中第一列有两行 第二列有一行 如下所示 Setting flex basis 100 在第三个项目上给出了所需的效果 但仅当容器的flex direction is row 改变flex
  • 即使列不占据整个宽度,表格也会占据整个宽度

    我有一个像这样的 HTML 表格 table border collapse collapse table thead th nth child 1 width 180px table thead th nth child 2 width
  • 在 CSS 中当场增长一个元素

    我有很多跨度 它们是盒子里的center标签 我希望当用户将鼠标悬停在每个框上时 每个框都会就地生长 这是行不通的 因为它会移动所有其他元素 而且看起来不太好 square hover background color yellow wid
  • 浏览器在使用 CSS 缩放图像时通常使用什么算法?

    我想得到canvas以与 CSS 相同的视觉保真度渲染缩放图像 根据我的测试 在 Chrome 版本 43 0 2357 130 中完成 它似乎不是 Lanczos3 即使我的测试重采样范围 http entropymine com res
  • 如何在 SASS 中定义动态 mixin 或函数名称?

    我想在 SASS 中动态创建 mixin 以列表中的每个项目命名 但它似乎不起作用 我尝试了这个 但出现错误 event icons fair concert art show conference dance show film part
  • 用随机图像填充表格

    首先 我的编码经验包括修改简单的脚本以在我的页面上工作 其次 我搜索并发现了几个类似的问题 但无法完全解决它们 我需要一些帮助来使用大约 40 张图像数组中的随机图像填充 3x3 表 我目前有一个使用 backgroundImage 属性的
  • 如何将angularjs变量值分配给html元素属性,例如输入elememnt的name属性

    我对 Angular 完全陌生 我有一个 AngularJS scope 变量 scope testme inputname 我想将此变量值分配给 html 元素的 name 属性 我想 结果如下
  • php curl 获取 html 和 js 渲染

    php curl 只获取html页面的源代码 不执行js脚本 我需要我的网站获取已执行所有 JavaScript 的源代码 我使用ajax 但无法在页面中添加更多js 因为当我加载另一个页面时脚本会保留 我找到了 SpiderMonkey
  • 是否可以从 JavaScript 注入的内联样式中减去一个数字?

    我在 HTML 中添加了内联样式 例如style left 10px 我可以添加 减去该数字吗 我想创建一个可以删除的规则8px从该数字开始 无论该数字是多少 我尝试使用丑陋的 importanthack 来覆盖它 但是当初始值改变时这没有
  • 如何在引导程序使用jquery中单击另一个链接时更改活动类?

    我有一个 html 作为侧边栏 并使用Bootstrap ul class nav nav list li class active a href Link 1 a li li a href link2 Link 2 a li li a h
  • 使用 SVG 的部分边框/描边

    我正在使用 svg d3 创建由 矩形 元素组成的图表 为每个矩形添加部分边框 描边 仅在矩形顶部 的最佳方法是什么 Thanks 我不认为 SVG 支持仅描边矩形或路径的一部分 描边不像 CSS 边框 您还有其他一些选择 所有这些都需要一
  • HTML 文本和密码输入字段的大小不同 Internet Explorer

    我正在为我的登录表单使用此表单设置 tr td class label Username td td td tr
  • 错误:“访问受限 URI 被拒绝”

    访问受限 URI 被拒绝 代码 1012 中断此错误 xhttp send null function getXML xml file if window XMLHttpRequest var xhttp new XMLHttpReques
  • 垂直对齐到另一个 div 的动态高度?

    我正在尝试将一个 div 与高度动态的相邻 div 垂直对齐 我遇到的大多数方法都要求我知道父 div 的高度 但如果你看我的例子 就会发现是 右 div 驱动了整个部分的高度 我试图让 div 左 中的文本垂直居中显示在右侧的 div 上
  • 为移动设备设计网页界面

    如何使您的网站在标准浏览器和各种可用的移动设备上看起来都很好 目前 我尚未决定是尝试调整布局大小以使其适用于小型设备 还是为移动设备提供单独的 CSS 我的用例是一个国际象棋游戏 我希望整个棋盘都可用而无需向下滚动 你会推荐什么 基本上没有
  • 使页脚正确粘贴到页面底部[重复]

    这个问题在这里已经有答案了 我试图让我的页脚 只是一个带有一行文本的div 位于屏幕底部 如果内容没有一直到达底部 或者位于内容的底部 如果内容需要滚动条 如果内容不需要滚动条 它可以完美工作 但是当内容太长时 页脚仍然位于同一位置 位于内

随机推荐

  • Scrapy + Splash = 连接被拒绝

    我安装了Splash使用这个link http splash readthedocs io en stable install html 按照所有步骤进行安装 但 Splash 不起作用 My 设置 py file BOT NAME Tes
  • Cocoa:如何制作像 Pages 或 Numbers 中那样的小工具栏?

    Apple 的应用程序 例如 Pages 和 Numbers 总是在主工具栏下方显示一个附加的小工具栏 Interface Builder 中是否有这样的对象 或者我必须从头开始构建它 我查了一下 IB 图书馆 但到目前为止什么也没找到 您
  • Get-Content -wait 无法按照文档中的描述工作

    我注意到当Get Content path to logfile Wait 输出实际上并不是像文档所解释的那样每秒刷新一次 如果我进入 Windows 资源管理器到日志文件所在的文件夹并刷新该文件夹 然后Get Content会将最新更改输
  • 子表 ajax 调用内的 SelectOneRadio 不起作用

    我正在使用 primefaces 3 4 1 并且我正在尝试使用 SelectOneRadio 和 ajax 调用subtable http www primefaces org showcase labs ui datatableSubT
  • 写入文件并处理重复条目

    背景 1 个按钮 1 需要写入的文件 1 个文本框 1 数字上下 因此 在我的应用程序中 我需要写入一个包含多行的文件 输入取自 TextBox 和 NumericUpDown 控件 它包含通用格式的字符串string Format 0 1
  • Azure Active Directory - 存储访问令牌的 MVC 应用程序最佳实践

    我使用 Azure Active Directory AAD 设置了一个简单的 MVC 应用程序 我需要查询 AAD Graph API 才能从我的应用程序管理应用程序角色和组 In the Startup类中 我收到了这样的 Access
  • Spring:如何下载文件?

    我想将 zip 存档从服务器保存到用户计算机 我有一个网页 显示有关该文件的一些信息 并有一个下载按钮 在我的控制器按钮操作中 只需在主页上重定向 但我想从数据库获取数据并将其保存到用户计算机 路径为由用户定义 问题是我不知道如何获得这条路
  • TextInputlayout 在设置错误时将 edittext 变为红色

    我有一个布局 每当我按下提交按钮并在文本输入布局上设置错误时 它会将 editText 变成红色 但我没有在设置错误时在 editText 上设置任何颜色 基本上我只是想在 editText 下面给出错误字符串 而不是在设置错误时将 edi
  • StructLayout 和 FieldOffset 的未定义行为

    我已经使用 PtrToStructure 函数 在 VB NET 中 成功从有效指针中提取了结构对象 但某些对象成员的结果不正确 与 C 示例相比 代码是 StructLayout LayoutKind Explicit pack 1 Ch
  • Facebook 网址中的“?fref=jewel”是什么意思?

    我在 Facebook 上收到了几个来自个人资料的好友请求 其链接以 fref jewel 结尾 所有链接的网址中都有这个结尾词 有些个人资料可能是假的 谁能告诉我 fref jewel 是什么意思 它只是意味着用户单击通知 jewel F
  • 从aws s3 pyspark读取文件数据

    我在 s3 中放置了一个 json 文件 s3 url 类似于以下网址 https s3 eu region 1 amazonaws com dir resources sample json 但在 pyspark 中 当传递相同时 它不会
  • 从其选项卡访问常规 UITabBarController 属性?

    我将描述我想做的事情 我有登录页面 ViewController 登录后 我传递到 UITabBarController MainTabBar m 这个MainTabBar有 key 属性 它从登录页面获取用户密钥 UITabBarCont
  • 如何在运行时修改strings.xml文件

    我将仅动态获取本地化数据 有办法更新吗strings xmlAndroid 运行时文件 我们可以在运行时向文件添加新字符串吗 我们可以在运行时向文件添加新字符串吗 不 您可以创建翻译数据库并维护该数据库 将新翻译动态添加到数据库并从那里读取
  • 开发者拒绝后在新的 iTunes Connect 中提交新的应用程序版本

    我从新 iTunes Connect 的提交队列中删除了我的构建 现在 当我向应用程序商店提交新版本时 它们会显示在 预发布 下 但不会显示在 版本 下 所以现在我的应用程序信息中只显示 1 0 准备出售 1 0 25 开发人员已拒绝 在
  • 在java中将图像转换为二进制数据(0和1)

    我想从 url 读取图像并将其转换为二进制数据 请帮我 byte data null ByteArrayOutputStream bas null try URL u new URL http www eso org public arch
  • /*@cc_on和IE6检测

    在研究 IE 的 JavaScript 条件注释时 我偶然发现了 cc on 这似乎有效 但是 那维基百科条目 http en wikipedia org wiki Conditional comment条件注释提供了以下代码 用于更强大的
  • 如何将 BufferedImage 转换为黑白图像?

    如何将现有的彩色 BufferedImage 转换为单色 我希望图像完全分为两个 RGB 代码 黑色和白色 因此 如果图像周围有一个边框 该边框是背景的较浅或较暗的阴影 并且背景正在转换为白色 那么我希望边框也转换为白色 依此类推 我怎样才
  • 使用 ActionFilter 进行 ASP.NET Core 日志记录

    我正在尝试添加日志记录功能以保存到我的 SQL Server 数据库 我尝试创建 ActionFilter 类并应用于我的控制器之一 但不起作用 我想捕获用户 ID IP 地址 控制器和操作访问以及时间戳 我缺少什么 AuditAttrib
  • 寄存器和共享内存取决于编译计算能力?

    当我编译时nvcc arch sm 13 I get ptxas info Used 29 registers 28 16 bytes smem 7200 bytes cmem 0 8 bytes cmem 1 当我使用nvcc arch
  • 粘性页眉和页脚可滚动内容

    我正在尝试创建一个包含三个 div 的页面 页眉 页脚和内容区域 这些应该占据 100 的屏幕 页眉和页脚很小并且不会改变 内容区域可以是任意大小 所以我添加了overflow auto当它变得太大时使其滚动 问题是 它溢出了屏幕的高度 我