【问题标题】:XHTML HTML element with 100% height causing scrollbars具有 100% 高度的 XHTML HTML 元素导致滚动条
【发布时间】:2011-04-03 04:48:43
【问题描述】:

在我的 CSS 文件中,我使用了这个:

html,body{height:100%;padding:0;margin:0;border:0;}

这会导致在 IE8、Chrome 5 和 Mozilla 3.6(所有最新版本)上出现垂直滚动条。

此外,文档是空的,它只有 html、head 和 body 标签,所以没有任何东西会出现在屏幕之外。

设置溢出:隐藏;在 html 元素上将完全停止在页面上滚动。

我怎样才能让它消失,但当内容高于显示高度时还保持滚动?

谢谢。

【问题讨论】:

  • 这是因为在所有浏览器中计算视口的舍入错误。使用高度:98% 或溢出:隐藏。

标签: html xhtml height vertical-scroll


【解决方案1】:

我需要在 XHTML 文档中使用 100% 的高度,这样我才能拥有 100% 的 div 元素。

不管怎样,我找到了答案:

仅当最顶部的元素具有上边距时才会出现此问题。 似乎顶部边距被添加到 100% 高度,使其更高并导致滚动条。

所以要么使用 padding-top 来分隔最顶部的元素,要么在标签和下一个有上边距的元素之间使用没有上边距的 a。

【讨论】:

  • 我要补充一点,这并不一定意味着页面中的第一个元素;一个深度嵌套的

    标签是我页面中的罪魁祸首。

  • 某些浏览器中的用户代理样式表在body 上添加了一个边距,它通常跟在<html> 标记之后,所以这会自动发生。然后使用重置 CSS。
【解决方案2】:

overflow:hidden 应该有助于防止滚动条的显示(由于舍入错误,您可能会丢失约 1px 的内容

【讨论】:

    【解决方案3】:

    可能有更好的方法,但我只是默认为 98%,这似乎可以避免所有浏览器中的滚动条。

    您也可以使用 JavaScript 设置高度,但感觉有点 hacky

    【讨论】:

      【解决方案4】:

      我今天遇到了这个问题,发现滚动条不是由第一个元素的上边距引起的,而是由于 html 和 body 元素的高度均为 100%。

      所以,使用这个 CSS 规则:

      html,body { height: 100%; }

      我得到滚动条。如果我将其更改为此 CSS 规则:

      html { height: 100%; }

      我没有滚动条。

      和平...

      【讨论】:

      • 您也需要将其设置在 body 上才能使用嵌套元素
      【解决方案5】:

      垂直滚动条的出现是因为height:100%。你不需要它,除非你有理由使用它。

      【讨论】:

        【解决方案6】:

        为什么要设置 100% 的身体高度?

        默认会达到这个高度。

        仅当您想以 px 为单位设置数字高度(例如 600px)时,才在 body 中设置高度是有意义的

        【讨论】:

        • 并非总是如此 - 有时您需要一个元素来填充可视客户区,例如,您将如何添加一个块元素来拉伸可视区域的整个高度?
        • 正如 Basiclife 所说,事实并非如此。请参阅jsfiddle.net/teDG3/1 进行简单演示。
        猜你喜欢
        • 1970-01-01
        • 2011-02-23
        • 2012-02-26
        • 2020-10-05
        • 2017-03-24
        • 1970-01-01
        • 2016-03-25
        • 1970-01-01
        • 2021-11-02
        相关资源
        最近更新 更多