CSS - 让 div 占用所有可用空间

发布于 2024-11-03 11:12:16 字数 319 浏览 0 评论 0原文

所有,

我有一个页面应该只占用浏览器中的可用屏幕空间。

我有一个“顶栏”和一个“底栏”,它们都固定位于页面的顶部和底部。我想要一个 div 来消耗(占用)上面提到的两个条之间的剩余空间。

在此处输入图像描述

中间的 div 不与顶部和底部栏重叠是至关重要的。这可以用 CSS 实现吗?还是我需要使用 js?

另外,如果我确实使用js,考虑到浏览器在js代码之前先加载CSS,那么使用js进行居中定位的上述效果如何?

非常感谢,

All,

I have a page which is suppose to take up only the available screen space in the browser.

I have a 'top bar' and a 'bottom bar', both of which are fixed positioned at the top and bottom of the page. I want to have a div which will consume (take up) the remaining of the space inbetween the two bars mentioned above.

enter image description here

Its crucial that the middle div is not overlapped by the top and bottom bars. Is this at all possible with CSS or do I need to make use of js.

Also, if I do go with js, considering the browser loads up the CSS first before the js code, how is the above work out using js for centre positioning?

Many thanks,

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

酷遇一生 2024-11-10 11:12:16

您可以使用相对绝对位置。这里有一个例子:

css

   html,body,#wrapper {
        height:100%;
        margin:0;
        padding:0;
    }
    #wrapper {
        position:relative;
    }

    #top, #middle, #bottom {
        position:absolute;
    }

    #top {
        height:50px;
        width:100%;
        background:grey;
    }
    #middle {
        top:50px;
        bottom:50px;
        width:100%;
        background:black;
    }
    #bottom {
        bottom:0;
        height:50px;
        width:100%;
        background:grey;
    }

html

<div id="wrapper">
    <div id="top"></div>
    <div id="middle"></div>
    <div id="bottom"></div>
</div>

演示: http://jsfiddle.net/jz4rb/4

You can use relative and absolute positions. Here an example:

css

   html,body,#wrapper {
        height:100%;
        margin:0;
        padding:0;
    }
    #wrapper {
        position:relative;
    }

    #top, #middle, #bottom {
        position:absolute;
    }

    #top {
        height:50px;
        width:100%;
        background:grey;
    }
    #middle {
        top:50px;
        bottom:50px;
        width:100%;
        background:black;
    }
    #bottom {
        bottom:0;
        height:50px;
        width:100%;
        background:grey;
    }

html

<div id="wrapper">
    <div id="top"></div>
    <div id="middle"></div>
    <div id="bottom"></div>
</div>

Demo: http://jsfiddle.net/jz4rb/4

债姬 2024-11-10 11:12:16

此演示适用于 Chrome12,但 YMMV 取决于您需要支持的浏览器。例如,position:fixed 在 IE6 中无法正常工作。

This demo works for me in Chrome12 but YMMV depending on which browsers you need to support. For example position:fixed does not work correctly in IE6.

怀里藏娇 2024-11-10 11:12:16

body 标记上使用绝对定位。顶部和底部为零的 position:absolute 会将主体“拉伸”到与浏览器窗口的大小相同。或者,设置 height: 100% 也可以,但我记得它对于某些旧浏览器来说效果很奇怪。

然后在中心 div 上使用绝对定位,并具有足够的顶部/底部偏移量以避免页眉和页脚栏。标题栏使用 top 绝对定位,fotter 使用 bottom 绝对定位。

注意:这不适用于移动浏览器。您需要使用 JS 获取窗口的高度并手动设置中心 div 的高度。

Use absolute positioning on the body tag. position:absolute with zero top and bottom will "stretch" body to be the same size as the browser window. Alternatively, setting height: 100% also works but I remember it works wierd for certain old browsers.

Then use absolute positioning on the center div, with enough top/bottom offsets to avoid your header and footer bars. The header bar is absolutely positioned with top and the fotter is absolutely positioned with bottom.

Note: This won't work on mobile browsers. You'll need to use JS to get the window's height and manually set the center div's height.

彩虹直至黑白 2024-11-10 11:12:16

Sotiris 给出了很好的答案(https://stackoverflow.com/a/5776719/1925112)。

将“overflow:auto”添加到中间,在调整窗口大小时它会表现得更加完美。

Great answer by Sotiris (https://stackoverflow.com/a/5776719/1925112).

Add "overflow:auto" to middle, and it will behave more than perfectly when resizing the window.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文