CSS:无法为滚动设置%高度%

时间:2010-01-14 17:51:01

标签: html css overflow

我正在尝试使用CSS解决方案滚动表格内容,同时保持标题固定。

CSS代码1:

<style type='text/css'>
    *   {
    padding:0;
    margin:0;
    border:0;
    }
    #ListData   {
        display:block;
        width:100%;
        height:100%;
        float:left;
        background:#ffffff;
    }
    #ListData table {
                    width:100%;
                }
    #ListData thead {
                    position:relative;
                    width:100%;
                    height:20px;
                    overflow:auto;
                    background:#0099cc;
                }
    #ListData tbody {
                    position:relative;  
                    width:100%;
                    height:300px;
                    overflow:auto;
                }               
    </style>

此样式的输出如下: http://riotdesign.in/test.php

这在Firefox中运行良好(我现在不关心IE ...)

但是,如果我使用百分比而不是px或em:

<style type='text/css'>
    *   {
    padding:0;
    margin:0;
    border:0;
    }
    #ListData   {
        display:block;
        width:100%;
        height:100%;
        float:left;
        background:#ffffff;
    }
    #ListData table {
                    width:100%;
                }
    #ListData thead {
                    position:relative;
                    width:100%;
                    height:10%;
                    overflow:auto;
                    background:#0099cc;
                }
    #ListData tbody {
                    position:relative;  
                    width:100%;
                    height:50%;
                    overflow:auto;
                }               
    </style>

这是我得到的: http://riotdesign.in/test2.php

我做错了什么? :)

1 个答案:

答案 0 :(得分:2)

在某些时候,您的对象需要具有block级父元素,并且具有确定的大小才能获得所需的滚动。

特别是在您的情况下,包含DIV ListDataListData table需要具有特定高度。

在为高度和宽度添加百分比值时,请确保您知道“x%of what ...?”的答案。并在链条上跟随这个问题,直到你遇到硬边界的东西。如果你进入Body元素并且仍然没有硬边界,你将无法获得所需的效果。

我在Firefox 3.5.xx中测试了这两个,并让tbody滚动:

#ListData
{
    display:block;
    width:100%;
    height:200px;
    float:left;
    background:#ffffff;
}

#ListData table {
   width:100%;
   height: 200px;
}

这也有效:

body
{ 
  width: 100%;
  height:600px;
}