用一个 div 填充剩余屏幕空间的高度

代码工坊 毕业设计 1

我目前正在开发一个 Web 应用程序,我希望内容填满整个屏幕的高度。

该页面有一个标题,其中包含一个徽标和帐户信息。这可以是任意高度。我希望内容 div 将页面的其余部分填充到底部。

我有一个 header div 和一个 content div 。目前我正在使用一个表格进行布局,如下所示:

CSS 和 HTML

#page {
    height: 100%; width: 100%
}

#tdcontent {
    height: 100%;
}

#content {
    overflow: auto; /* or overflow: hidden; */
}
<table id="page">
    <tr>
        <td id="tdheader">
            <div id="header">...</div>
        </td>
    </tr>
    <tr>
        <td id="tdcontent">
            <div id="content">...</div>
        </td>
    </tr>
</table>

页面的整个高度被填满,不需要滚动。

对于内容 div 中的任何内容,设置 top: 0; 会将其放在标题下方。有时内容将是一个真实的表格,其高度设置为 100%。放在 header 里面 content 不会让这个工作。

有没有办法在不使用的情况下达到相同的效果 table

更新:

内容中的元素 div 也将高度设置为百分比。因此,内部 100% 的东西 div 会将其填充到底部。 50% 的两个元素也是如此。

更新 2:

例如,如果标题占据屏幕高度的 20%,则在 50% 内部指定的表格 #content 将占用 40% 的屏幕空间。到目前为止,将整个东西包装在一张桌子上是唯一有效的方法。

回复

共2条回复 我来回复
  • 源码工厂
    这个人很懒,什么都没有留下~
    评论
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <title>Test</title>
    <style type="text/css">
    body
    ,html
    {
        height: 100%;
        margin: 0;
        padding: 0;
        color: #FFF;
    }
    
    #header
    {
        float: left;
        width: 100%;
        background: red;
    }
    
    #content
    {
        height: 100%;
        overflow: auto;
        background: blue;
    }
    
    </style>
    </head>
    <body>
    
        <div id="content">
            <div id="header">
                    Header
                    <p>Header stuff</p>
            </div>
                Content
                <p>Content stuff</p>
        </div>
    
    </body>
    </html>
    

    在所有健全的浏览器中,您可以将“标题” div 作为同级放在内容之前,并且相同的 CSS 将起作用。但是,如果在这种情况下浮动为 100%,则 IE7- 不会正确解释高度,因此标题需要在内容中,如上所述。overflow: auto 将导致 IE 上的双滚动条(它始终使视口滚动条可见,但已禁用),但没有它,如果内容溢出,内容将被剪辑。

    0条评论
  • 毕业设计货栈
    这个人很懒,什么都没有留下~
    评论

    在 CSS 中确实没有一种可靠的、跨浏览器的方式来做到这一点。假设您的布局很复杂,您需要使用 JavaScript 来设置元素的高度。您需要做的事情的本质是:

    Element Height = Viewport height - element.offset.top - desired bottom margin
    

    一旦您可以获取此值并设置元素的高度,您需要将事件处理程序附加到窗口 onload 和 onresize 以便您可以触发您的调整大小功能。

    此外,假设您的内容可能大于视口,您将需要设置 overflow-y 来滚动。

    0条评论

发表回复

登录后才能评论