如何使页面(非屏幕)的高度100%的div?

我正尝试使用CSS在页面上创建“灰色”效果,同时在应用程序正在工作时前台显示加载框。 我通过创建100%高度/宽度,半透明的黑色div,通过javascript打开/关闭其可见性来完成此操作。 我认为这很简单, 但是,当页面内容扩展到屏幕滚动的位置时,滚动到页面底部会显示一个不灰色的部分。 换句话说,div高度的100%似乎适用于浏览器视口大小,而不是实际的页面大小。 如何让div扩展为覆盖整个页面的内容? 在尝试使用JQuery .css('height','100%')之前,我尝试过使用JQuery .css('height','100%'),但这并没有改变任何东西。

这是所讨论的div的CSS:

div.screenMask
{
    position: absolute;
    left: 0px;
    top: 0px;
    width: 100%;
    height: 100%;
    z-index: 1000;
    background-color: #000000;
    opacity: 0.7;
    filter: alpha(opacity=70);
    visibility: hidden;
}

谢谢。



我意识到在问了很长时间之后我已经回答了这么长时间,但是在我被这个问题短暂绊倒之后,我降落在这里,目前的答案都不正确。

这是正确的答案:

body {
    position: relative;
}

而已! 现在,您的元素将相对于<body>而不是视口进行定位。

我不打扰position: fixed ,因为它的浏览器支持仍然参差不齐。 iOS 5之前的Safari根本不支持它。

请注意,您的<div>元素将覆盖<body>的边框(框+边框+边框),但不会覆盖边框。 通过在<div> (例如top: -20px )上设置负值位置或通过删除<body>的余量进行补偿。

我还建议将<body>设置为height: 100%以确保您永远不会在较短的页面上看到部分遮罩的视口。

从以前的答案中取得两个有效的点。 正如Ben Blank所说,您可以丢失widthheight声明,而是定位所有四个角。 mercator是正确的,你应该使用一个ID来代替这样一个重要的单一元素。

这留下了以下建议完整的CSS:

body {
    position: relative;
    margin: 0;
}

#screenMask {
    position: absolute;
    left: 0; right: 0;
    top: 0; bottom: 0;
    z-index: 1000;
    background-color: #000;
    opacity: 0.7;
    filter: alpha(opacity=70);
    visibility: hidden;
}

和HTML:

<body>
    <div id="screenMask"></div>
</body>

我希望这可以帮助别人!


div.screenMask
{
    position: absolute;
    left: 0px;
    top: 0px;
    right: 0px;
    bottom: 0px;
    z-index: 1000;
    background-color: #000000;
    opacity: 0.7;
    filter: alpha(opacity=70);
    visibility: hidden;
}

通过设置所有topbottomleftright ,高度和宽度都会自动计算。 如果screenMask<body>元素的直接子元素,并且标准框模型有效(即怪异模式没有被触发),则它将覆盖整个页面。

链接地址: http://www.djcxy.com/p/88257.html

上一篇: How to make a div 100% of page (not screen) height?

下一篇: HTML5 iFrame Seamless Attribute