【问题标题】:CSS: Unable to set tbody height in % for scrollCSS:无法以 % 为滚动设置 tbody 高度
【发布时间】:2012-01-04 22:55:22
【问题描述】:

我正在尝试使用 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

我做错了什么? :)

【问题讨论】:

    标签: html css overflow


    【解决方案1】:

    在某些时候,您的对象需要具有确定大小的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;
    }
    

    【讨论】:

    • 如果我的 body 设置为 {width:100%;高度:100%} ?因为我希望我的页面可以调整大小。
    • 某事必须有一个具体的边缘。它可以是容器 div、body 或表格本身。
    • 否则,'溢出`是没有意义的
    • 好的,我尝试为我的身体标签设置明确的尺寸。问题依然存在。
    • 您的尺寸是否超出了屏幕的范围?要显示滚动条,您的 tbody 必须限制在小于可用区域的范围内。如果一切都是百分比,那么可用宽度就是您的屏幕宽度,可用高度是无穷大。同样,如果你有一个超出屏幕大小的具体边界,那么父元素的滚动条就足够了
    猜你喜欢
    • 2014-07-22
    • 1970-01-01
    • 2012-10-01
    • 1970-01-01
    • 2019-11-12
    • 2020-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多