【问题标题】:Sticky Footer Scrolling Horizontally with Vertical Scrolling Content in CSS粘性页脚在 CSS 中使用垂直滚动内容水平滚动
【发布时间】:2015-05-04 15:12:48
【问题描述】:

目前在我看来,这就像圆的正交,但我还是尝试在这里提出这个问题。

我需要以下物品:

标题 - 100% 宽度,固定在顶部
内容 - 固定宽度,垂直滚动内容
页脚 - 与内容宽度相同,固定在底部
滚动条 - 同时水平滚动内容和页脚

即底部应该只有一个水平滚动条同时滚动内容和页脚,但内容和页脚之间没有滚动条。垂直滚动条应该只影响内容。

(当然,水平滚动条应该是自动的,即仅当内容/页脚宽度大于当前视口宽度时才会出现)

我最接近的是以下 HTML/CSS:

<!doctype html>
<html>
<head>
  <title>scroll attempt</title>
</head>
<body style="overflow-x:hidden;height:100vh;margin:0;">
  <div style="height:100vh;display:flex;flex-direction:column;">
  <div style="width:100%;height:100px;background-color:red;">header</div>
  <div style="display:flex;flex-direction:column;height:100%;overflow-x:auto;overflow-y:hidden;">
    <!--
      the following div should only have a vertical scrollbar,
      hence overflow-x:visible; - which is not respected
      when setting overflow-x:hidden; the horizontal scrollbar disappears
      but then the vertical scrollbar moves when scrolling horizontally
    -->
    <div style="flex:1;background-color:yellow;overflow-x:visible;overflow-y:auto;">
      <div style="width:1200px;height:800px;background-color:orange;">scrolling</div>
    </div>
    <div style="width:1200px;height:100px;background-color:green;">footer</div>
  </div>
</div>
</body>
</html>

不幸的是,使用这个 HTML/CSS,一个不需要的滚动条出现在围绕内部内容的 div 上,它位于内容和页脚之间,尽管 overflow-x:visible;已设置。设置溢出时-x:hidden;滚动条不见了,但随后垂直滚动条也被底部的水平滚动条滚动,而不是停留在页面的右侧。

该行为在当前的 IE/FF/Chrome 版本中大多是一致的。我还有一个 Javascipt 版本,它修复了窗口调整大小和垂直滚动上的 div,但这在 IE 中闪烁得很厉害,这就是我更喜欢纯 CSS 解决方案的原因。

这是一个 jsfiddle:http://jsfiddle.net/nftqjkyq/

有什么想法吗?

[编辑:添加了有关滚动条所需行为的更多详细信息]

【问题讨论】:

  • 只是为了说明它应该如何表现,这里有一个 jsfiddle 可以按需要工作,但使用 Javascript(问题是如何在没有 Javascript 的情况下实现):jsfiddle.net/3bhsswnv

标签: html css


【解决方案1】:
<div style="width:100%;height:100px;background-color:green;">footer</div>

如果您想删除小提琴上的第二个滚动条,请将页脚的宽度更改为 100%

解决了小提琴 http://jsfiddle.net/nftqjkyq/1/

编辑 试试这个http://jsfiddle.net/nftqjkyq/4/

编辑 使用在溢出时滚动的 Sticky Footer(仅使用 css 滚动固定元素是不可能的)

这是一个可能更接近您想要的解决方案......也许它可以给您指明方向。

试试这个小提琴:http://jsfiddle.net/nftqjkyq/10/

【讨论】:

  • 也许我的问题没有让自己完全清楚 - 但在这里我再试一次:不是第二个滚动条必须走,而是第一个。并且页脚必须与内容同时水平滚动(实际上,内容和页脚都包含具有必须匹配的相同度量的表格数据)。将页脚的宽度设置为 100% 实际上会修复它,而不是让它与内容一起滚动。
  • 页脚不会粘在页面底部(我的问题中明确提到了这一点)。
  • 与我的 jsfiddle 基本相似 - 除了垂直滚动条是全高的,而在我的它具有滚动部分的高度。
  • @RemigiusStalder 但你清楚地表明你的小提琴有一个错误,它显示 2 个水平滚动条......你想要解决方案把它们拿出来......所以我做到了...... ..所以我的小提琴在这方面肯定与你的不同......我本可以在你最初的问题中发誓你强调你想取出第二个滚动条
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-04-08
  • 1970-01-01
  • 2012-07-23
  • 2021-11-13
  • 1970-01-01
  • 2014-01-09
  • 1970-01-01
相关资源
最近更新 更多