如何使页面(非屏幕)的高度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所说,您可以丢失width
和height
声明,而是定位所有四个角。 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;
}
通过设置所有top
, bottom
, left
和right
,高度和宽度都会自动计算。 如果screenMask
是<body>
元素的直接子元素,并且标准框模型有效(即怪异模式没有被触发),则它将覆盖整个页面。