Html 如何使div达到页面(而不是屏幕)高度的100%?
我正在尝试使用CSS在我的页面上创建一个“灰显”效果,同时在应用程序运行时,加载框显示在前台。我创建了一个100%高/宽、半透明的黑色div,通过javascript打开/关闭可见性。我认为这很简单;但是,当页面内容扩展到屏幕滚动的点时,滚动到页面底部会显示未变灰的部分。换句话说,div高度的100%似乎应用于浏览器视口大小,而不是实际页面大小。如何使div扩展以覆盖整个页面的内容?在切换JQuery.css的可见性之前,我尝试过使用JQuery.css('height','100%'),但这并没有改变任何事情 这是相关部门的CSS:Html 如何使div达到页面(而不是屏幕)高度的100%?,html,css,Html,Css,我正在尝试使用CSS在我的页面上创建一个“灰显”效果,同时在应用程序运行时,加载框显示在前台。我创建了一个100%高/宽、半透明的黑色div,通过javascript打开/关闭可见性。我认为这很简单;但是,当页面内容扩展到屏幕滚动的点时,滚动到页面底部会显示未变灰的部分。换句话说,div高度的100%似乎应用于浏览器视口大小,而不是实际页面大小。如何使div扩展以覆盖整个页面的内容?在切换JQuery.css的可见性之前,我尝试过使用JQuery.css('height','100%'),但这并
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;
}
谢谢。如果您将
位置:绝对
更改为位置:固定
它将在除IE6之外的所有浏览器中工作。这会将div固定到视口中,因此滚动时它不会移出视图
您可以在jQuery中使用$(document).height()
,使其在IE6中也能工作。例如
$('.screenMask').height($(document).height());
这显然也可以解决所有其他浏览器的问题,但如果可以避免的话,我宁愿不使用JavaScript。实际上,你也需要对宽度做同样的事情,以防出现任何水平滚动
也有,但它们倾向于对CSS施加一些其他限制,或者使用JavaScript,因此它们可能不值得麻烦
另外,我假设您只有其中一个掩码,因此我建议使用ID而不是类。如果您使用jQuery设置弹出窗口前的高度,我猜可以添加更多javascript:) 您可以将div的高度设置为document.body的scrollHeight,这样它应该覆盖整个正文。你确实需要增加一些额外的技巧,以确保它一直覆盖着身体,以防下面的东西决定生长
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;
}
通过设置所有
顶部
、底部
、左侧
和右侧
,高度和宽度将自动计算。如果screenMask
是
元素的直接子元素,并且标准盒子模型有效(即怪癖模式未被触发),这将覆盖整个页面。我意识到我回答这个问题已经很久了,但我在被这个问题短暂绊倒后来到这里,目前的答案都不正确
以下是正确答案:
body {
position: relative;
}
就这样!现在,您的元素将相对于
而不是视口进行定位
我不想为position:fixed费心,因为它的浏览器支持仍然参差不齐。iOS 5之前的Safari根本不支持它
请注意,
元素将覆盖
的边框框(框+填充+边框),但不会覆盖其边距。通过在
上设置负位置(例如顶部:-20px
)或删除
的边距进行补偿
我还建议将
设置为高度:100%
,以确保不会在较短的页面上出现部分遮罩的视口
从先前的回答中得出两个有效点。正如Ben Blank所说,您可能会丢失宽度
和高度
声明,而是将所有四个角都定位。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>
我希望这能帮助别人 如果您希望弹出具有覆盖效果,则可以使用以下步骤
<style>
.overlay{
background:#000;
opacity:0.5;
position:fixed;
z-index:1;
width:100%;
height:100%;
}
.popup{
width:500px;
margin:auto;
position:fixed;
z-index:2;
height:300px;
}
</style>
<div class="overlay"></div>
<div class="popup">
Hello everyone
</div>
.覆盖{
背景:#000;
不透明度:0.5;
位置:固定;
z指数:1;
宽度:100%;
身高:100%;
}
.弹出窗口{
宽度:500px;
保证金:自动;
位置:固定;
z指数:2;
高度:300px;
}
大家好
当显示半透明的灰色div时,是否可以禁用滚动条?你真的希望用户能够向下滚动查看他们无法处理的内容吗?如果基础页面高于一个视口高度,你不需要使用position:fixed
来防止div.screenMask滚动吗?这在IE6中根本不起作用。在其他浏览器中,它需要位置:身体上的相对位置才能工作,即使这样,它也只能在垂直滚动上工作,而不能在水平滚动上工作。如果使用Javascript显示掩码,还有什么比Javascript更能解决高度问题呢?谢谢,将绝对值更改为固定值就是所需的全部!关于身份证也有道理。@Lee:太好了@保罗:这几乎不是什么问题,我必须同意。但是,虽然JS支持不是问题所在,但最终会将风格与行为混为一谈,并且可能(稍微)影响性能。李也回答了你的问题。在这种情况下,JavaScript解决方案实际上是不必要的。啊,还记得以前的好日子吗,100%实际上意味着100%?+1,但是我要指出的是,当将滚动容器的位置更改为相对位置时,即使这是一种值得怀疑的方法,也可能会产生不可预见的后果。幸运的是,今天,我的滚动容器已经相对定位了!使用位置的诀窍:绝对
与左
、右
、上
和下
相结合,有时是一个真正的救命稻草,而且总是很容易忘记。相对于身体
的定位几乎可以解决这个问题,但将body的高度设置为100%并不是一个有用的解决方案:虽然它修复了不填充视口的页面,但它会打断较大的页面,即body将只具有视口的高度。另外,将minheight:100%
设置为body似乎根本没用(Firefox)。