高度:100%或最小高度:100%的HTML和身体元素?

Mr.*_*ien 73 html css

在设计布局时,我将html, body元素设置为height,100%但在某些情况下,这会失败,那么应该使用什么?

html, body {
   height: 100%;
}
Run Code Online (Sandbox Code Playgroud)

要么

html, body {
   min-height: 100%;
}
Run Code Online (Sandbox Code Playgroud)

嗯,这不是基于意见的,因为每种方法都有自己的缺陷,那么推荐的方法是什么?为什么?

Bol*_*ock 178

如果您尝试将背景图像应用于htmlbody填满整个浏览器窗口,则不会.请改用:

html {
   height: 100%;
}

body {
   min-height: 100%;
}
Run Code Online (Sandbox Code Playgroud)

在这里给出推理(我在这里整体解释了如何以这种方式应用背景):

顺便说一句,你为什么要注明原因height,并min-heighthtmlbody分别为,因为无论元素有什么内在的高度.两者都是height: auto默认的.视口具有100%的高度,因此height: 100%从视口中获取,然后应用于body最小值以允许滚动内容.

第一种方法,height: 100%在两者上使用,body一旦它们开始超出视口高度,就可以防止其内容扩展.从技术上讲,这不会阻止内容滚动,但它确实会导致body在折叠下方留下间隙,这通常是不合需要的.

第二种方法,min-height: 100%在两者上使用,不会导致body扩展到完整高度,html因为除非有明确min-height的百分比,body否则百分比不起作用.htmlheight

为了完整起见,CSS2.1的第10部分包含了所有细节,但这是一个非常复杂的阅读,所以如果你对我在此处解释的内容不感兴趣,你可以跳过它.

  • @BoltClock任何想法如何让孩子100%的身体[这里](http://jsfiddle.net/ZpDLw/)?[this](http://jsfiddle.net/ZpDLw/1/)虽然有效 (10认同)
  • 这就是我最喜欢的:)"高度:100%从视口中获取,然后应用于身体至少以允许滚动内容`简单易用的解决方案...谢谢// (3认同)

Dam*_*ica 11

您可以使用viewport height(vh)单位:

body {
    min-height: 100vh;
}
Run Code Online (Sandbox Code Playgroud)

它与屏幕有关,而不是父高,所以你不需要html高度:100%.

  • 注意移动设备如何理解这一点 (4认同)
  • 警告:视口相对单位不考虑滚动条尺寸。如果页面宽度溢出,您的内容底部可能会出现额外的几个像素的空白区域。 (3认同)