【问题标题】:CSS Only - Dynamic Header Height & 100% Content Height with Scrollbars仅 CSS - 动态标题高度和 100% 滚动条内容高度
【发布时间】:2011-08-16 04:21:57
【问题描述】:

目标是不使用动态高度标题隐藏滚动条。

stackoverflow 上有很多关于 CSS 高度 100% 的帖子;我的问题有点独特,如果是骗子,请原谅,但我找不到答案。

所以我的网络应用需要垂直滚动条 + 高度 100% 和动态标题高度。 header 的高度未知,因此内容区域的高度应为 100%-header 高度。

我不知道如何优雅地解决的问题是,如果您在其上执行 height:100% 并且标题向上,则内容垂直滚动条(尤其是底部向下滚动按钮)将被隐藏最佳。 (身高 >100% 并不理想)。

<style>
  html{
    height:100%;
  }
  body{
    height:100%;
    margin:0px;
    padding:0px;
    overflow:hidden;
  }
  #header{
    background:blue;
  }
  #content{
    background:red;
    overflow-y:scroll;
    height:100%;
  }
</style>

<body>
  <div id='header'>
    dynamic height top. (Text here could be any length.)
  </div>
  <div id='content'>
    100% with no-hidden scroll-down scrollbar button.
  </div>
</body>

这可以在没有 JavaScript 和没有 HTML/CSS 表格的情况下完成吗? (我在使用 css 表时遇到了 colspan 问题,使用 html 表进行布局似乎是一种不好的做法)

想知道那里的 CSS/HTML 专家是否有答案。

http://jsbin.com/ijoqe4/

http://jsbin.com/ijoqe4/edit

感谢您的任何见解。 :)

【问题讨论】:

  • 表格有什么问题?它们是有效的 HTML,无需任何复杂的 hack 即可轻松解决您的问题。
  • 我非常困惑。您发布的示例似乎完全为您提供了您所描述的您想要的内容。您能否说明您当前的尝试与预期效果之间的差异?
  • @Thomas,其实我也试过用 Tables 来做,但没有用。
  • @Xixonia,我想要做的是让滚动条上的底部向下滚动按钮不会被覆盖......在 Chrome 和 Firefox 中,如果你在底部,顶部有一个动态标题高度,底部滚动按钮(以及滚动条的很大一部分,取决于顶部标题的高度)被隐藏了,所以我想知道是否有一种纯粹的 CSS 方式来做它,同时仍然显示所有滚动条。

标签: html css web-applications height fullscreen


【解决方案1】:

据我所知,使用动态标题,在纯 CSS 中无法做到这一点。您的问题源于您:

  • 希望标头是动态的,因此容器必须相应地是动态的
  • 要让容器的位置根据标头动态调整,您需要一个block-level 标头,在其下方有一个block-level 容器。
  • 让容器伸展到窗口底部的唯一方法是设置position: absolute; top:0; bottom: 0;bottom 指的是窗口底部。但是您需要 top 来指代头部的底部,而不是窗口的顶部(这是 bottom 所指的元素)。

因此,由于在纯 CSS 中不可能针对两个不同的其他元素调整一个元素的位置,因此您要么必须使用 javascript 解决方案,要么使用表格。悲伤,但真实。

但是,尽管设计表格通常被视为禁忌,但在这种情况下,这将是您最好和最干净的选择,而且从技术上讲,它仍然只是 HTML 和 CSS。

【讨论】:

  • 感谢Herman的解释,读了几遍才明白……总是最简单的东西似乎最令人困惑,哈。我会咬紧牙关并使用 JavaScript...(我什至无法使用 css 表或 reg 表 jsbin.com/ijoqe4/8/edit 使滚动条正确运行)JavaScript 似乎是最好的选择。
  • Herman:我认为你的信息是正确的,但你的第三点(如果我理解正确的话)并不完全——你可以在不使用 position:absolute:html, body, #content { height:100%; } 的情况下使元素具有 100% 的高度将导致#content 元素为窗口高度的 100%:jsfiddle.net/jshado1/hLbyE 需要注意的是,DOM 树上的所有父元素都必须具有明确的高度。
  • @jacob 确实你是对的,按照你的建议去做是制作粘性页脚和页眉的常见解决方案。现在考虑一下,毕竟可能有一种方法可以做到这一点,具有 100% 的高度和负边距(也是基于百分比的?),但我不确定这种解决方案在任何情况下会有多“动态” ,如果它有效。不过值得一试!
  • @HermanSchaaf mm,(基于百分比的边距等于页眉/页脚的基于百分比的高度)会更有活力,但唉,不会得到人们想要的最终效果(其中边距实际上会根据内容进行调整,从而迫使页眉/页脚的高度增长)。为什么这么难:(
【解决方案2】:

也许可以尝试将您的 html、正文高度设置为 98% 而不是 100%。您已禁用 body overflow,因此使用 100% 的 div 超出了浏览器大小。

【讨论】:

  • 您好 robx,感谢您的回复。是的,这是一种选择……但我的强迫症不能忍受浪费那些宝贵的像素……(位于底部/中心 Div 末端和视口底部之间的像素):/ 和高度人们的状态栏可能会有所不同,以及顶部的动态高度......
猜你喜欢
  • 2011-08-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-22
相关资源
最近更新 更多