html体小于其内容

spr*_*aff 8 html css

以下是该问题的基本说明:

<html><head><style type="text/css">
    html {width: 100%; height: 100%; background: red;}
    body {width: 100%; height: 100%; background: green;}
    
    .leftbar, .rightbar {height: 100%; background: blue;}

    .leftbar  {float: left;}
    .rightbar {float: right;}

    table {width: 100px; height: 800px; background: black; color: white;
           margin: 0 auto 0 auto;}
</style></head>
<body>
    <ul class="leftbar"><li>one</li><li>two</li></ul>
    <ul class="rightbar"><li>alpha</li><li>beta</li></ul>
    <table><tbody><tr><td>blah blah</td></tr></tbody></table>
</body>
</html>?
Run Code Online (Sandbox Code Playgroud)

我们可以立即看到浮动ul元素与body包含它们的元素一样高,问题是它body不像table它包含的那么高.

如何让它body足够大?在这个例子中,我希望leftbar并且rightbar一直向下,就滚动允许而言,所以你永远不会看到它们下面的任何空隙.

Ale*_*lov 16

height: 100%body规则中删除- 这使得主体与视口高度一样高(小于内容高度).


jmb*_*cci 6

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

这似乎是对代码的误解."100%"的高度与某些东西有关.换句话说"100%的是什么?"

这样做是设置body =窗口的大小.在JSFiddle中,它是渲染框的大小.在浏览器上,它将是观看窗口的100%.

因此,如果将浏览器窗口缩小到很小的视图空间,100%的高度将是微小尺寸的100%.这是准确的.

如果您的内容超过了该内容,那么您将遇到示例中出现的问题.回想一下,该表是子元素,而不是父容器.CSS继承自父母,而不是孩子.所以你必须确保BODY在它的高度设置中保持动态.

更新

这是一个用于身高最小高度的JSFiddle; http://jsfiddle.net/uZCKn/1/ 它需要HTML高度100%才能工作.从这里得到:最小高度不适用于身体

我唯一能想到的是用JavaScript来设置侧栏的高度或使用人造柱.但是可能还有其他事情可以让左/右栏填满它的容器高度以及我所缺少的.

有一部分解释.


hra*_*dac 5

http://jsfiddle.net/6ZeLh/

要固定身体高度不会一直下​​降,请更改body{height:100%}min-height:100%. 如果您关心,这在 IE6 中将不起作用。要修复您的列表,请取出浮动。添加position:relativebody,添加position:absolute.leftbar, .rightbar并设置位置如下

.leftbar  {left:0; top:0;}
.rightbar {right:0; top:0;}
Run Code Online (Sandbox Code Playgroud)

你可以在我上面链接的小提琴中看到它。


spr*_*aff 2

使用表格。它们不纯粹,但它们有效

基于 div 的解决方案涉及不可接受的妥协(绝对尺寸、浮动损失)。

  • _fsvo_“工作”。认为仅仅因为它们适用于您的特定用例,它们就必须适用于访问您的内容的所有其他上下文,这是短视的想法。 (2认同)
  • 它们在必要的环境中起作用,而替代方案*不起作用*。 (2认同)
  • 我们仅仅因为它过时了,就对可能解决OP问题的有效答案投反对票,这对我们的社区来说并没有很好的反映。表格很难维护,并且会破坏正常的流程,但它们是解决几个棘手布局问题的智能解决方案,特别是在弹性盒出现之前的世界中。(就像普通块级元素上的“display: table;”一样。) (2认同)