子div的高度溢出父容器

时间:2010-02-01 02:23:29

标签: css

我们需要为div的溢出文本设置垂直滚动条。问题是当我们将高度设置为100%并溢出到auto时,它会扩展到超出其父容器,因为它前面有另一个兄弟div。这是一个例子:

<style type="text/css">
    .container {height: 100px; width: 100px; border: solid;}
    .titlebar {height: 2em; background: gray;}
    .app-body {height: 100%; overflow: auto; background: lightblue;}    
</style>

...

<div class="container">
    <div class="titlebar"></div>
    <div class="app-body">Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Donec condimentum pretium nisl.</div>
</div>
设置为100%的

app-body会使其高度为100px,这会使container的{​​{1}}超出2em的底部。我们尝试不使用app-body的高度,但这会导致它在没有显示滚动条的情况下溢出。

我知道我们可以将高度设置为较小的百分比或固定数量的像素,但如果字体大小发生变化,这将导致我们出现问题。如果100% - 2em的高度有效,那么这将是我们试图定义的。

2 个答案:

答案 0 :(得分:5)

尝试此操作,将app-body定位设置为绝对值,然后将顶部固定为3em,其余部分固定为0:

<style type="text/css">
  .container {height: 100px; width: 100px; border: solid; 
      position: relative;}
  .titlebar {height: 2em; background: gray; 
      position: relative;}
  .app-body {height: auto; overflow: auto; background: lightblue; 
      position: absolute; top: 2em; left: 0; right: 0; bottom: 0;}    
</style>

PS:以上在FF3.6,IE8,Webkit浏览器上测试过。

答案 1 :(得分:-2)

您可以将.container设置为overflow:隐藏如下:

<style type="text/css">
.container {height: 100px; width: 100px; border: solid;overflow: hidden;} 
</style>

希望这有帮助