制作一个覆盖整个页面的 div

Posted

技术标签:

【中文标题】制作一个覆盖整个页面的 div【英文标题】:Making a div that covers the entire page 【发布时间】:2011-03-16 02:43:57 【问题描述】:

我想。我放置了一个高度为 100% 的 CSS 样式,但这仅涵盖可视区域。我希望它在我向下滚动时也覆盖该区域。

【问题讨论】:

这是一篇关于如何做到这一点的精彩文章...james.padolsey.com/javascript/get-document-height-cross-browser 在下面查看我的解决方案。除非我误解了您的问题,否则其他解决方案只会告诉您视口(窗口)尺寸,而不是文档尺寸... CSS 解决方案不能解决这个问题,你需要一点 javascript。 【参考方案1】:

关注css 将完成所需的工作。

.overlay 
  background: #fff;
  position: fixed;
  bottom: 0;
  right: 0;
  left: 0;
  top: 0;

有时我们想用覆盖覆盖页面主体,直到网页的所有资源都没有完全下载。我们淡出这个覆盖层以显示我们网页的完整内容。下面的例子是对上述答案的一些修改,在这个例子中,我们展示了一个覆盖整个页面的覆盖层,带有 css3 动画:

更多动画,请访问Here

$(window).load(function() 
    $('.overlay').delay(1000).fadeOut(800);
);
.overlay 
  background: #fff;
  position: fixed;
  bottom: 0;
  right: 0;
  left: 0;
  top: 0;

.loading 
  position: absolute;
  top: 50%;
  left: 50%;

.loading-bar 
  display: inline-block;
  width: 4px;
  height: 18px;
  border-radius: 4px;
  animation: loading 1s ease-in-out infinite;

.loading-bar:nth-child(1) 
  background-color: #3498db;
  animation-delay: 0;

.loading-bar:nth-child(2) 
  background-color: #c0392b;
  animation-delay: 0.09s;

.loading-bar:nth-child(3) 
  background-color: #f1c40f;
  animation-delay: .18s;

.loading-bar:nth-child(4) 
  background-color: #27ae60;
  animation-delay: .27s;


@keyframes loading 
  0% 
    transform: scale(1);
  
  20% 
    transform: scale(1, 2.2);
  
  40% 
    transform: scale(1);
  
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div class="overlay">
  <div class="loading">
    <div class="loading-bar"></div>
    <div class="loading-bar"></div>
    <div class="loading-bar"></div>
    <div class="loading-bar"></div>
  </div>
</div>
<p>Lorem ipsum dolor sit amet, Lorem ipsum dolor sit amet, Lorem ipsum dolor sit amet, Lorem ipsum dolor sit amet, Lorem ipsum dolor sit amet, Lorem ipsum dolor sit amet, Lorem ipsum dolor sit amet, Lorem ipsum dolor sit amet, Lorem ipsum dolor sit amet, Lorem ipsum dolor sit amet, Lorem ipsum dolor sit amet, Lorem ipsum dolor sit amet, Lorem ipsum dolor sit amet, Lorem ipsum dolor sit amet, Lorem ipsum dolor sit amet, Lorem ipsum dolor sit amet, Lorem ipsum dolor sit amet, Lorem ipsum dolor sit amet, Lorem ipsum dolor sit amet, </p>
<p>Lorem ipsum dolor sit amet, Lorem ipsum dolor sit amet, Lorem ipsum dolor sit amet, Lorem ipsum dolor sit amet, Lorem ipsum dolor sit amet, Lorem ipsum dolor sit amet, Lorem ipsum dolor sit amet, Lorem ipsum dolor sit amet, Lorem ipsum dolor sit amet, Lorem ipsum dolor sit amet, Lorem ipsum dolor sit amet, Lorem ipsum dolor sit amet, Lorem ipsum dolor sit amet, Lorem ipsum dolor sit amet, Lorem ipsum dolor sit amet, Lorem ipsum dolor sit amet, Lorem ipsum dolor sit amet, Lorem ipsum dolor sit amet, Lorem ipsum dolor sit amet, </p>
<p>Lorem ipsum dolor sit amet, Lorem ipsum dolor sit amet, Lorem ipsum dolor sit amet, Lorem ipsum dolor sit amet, Lorem ipsum dolor sit amet, Lorem ipsum dolor sit amet, Lorem ipsum dolor sit amet, Lorem ipsum dolor sit amet, Lorem ipsum dolor sit amet, Lorem ipsum dolor sit amet, Lorem ipsum dolor sit amet, Lorem ipsum dolor sit amet, Lorem ipsum dolor sit amet, Lorem ipsum dolor sit amet, Lorem ipsum dolor sit amet, Lorem ipsum dolor sit amet, Lorem ipsum dolor sit amet, Lorem ipsum dolor sit amet, Lorem ipsum dolor sit amet, </p>

【讨论】:

【参考方案2】:

使用position:fixed 这样您的 div 将持续保持在整个可视区域中..

给你的 div 一个类 overlay 并在你的 CSS 中创建以下规则

.overlay
    opacity:0.8;
    background-color:#ccc;
    position:fixed;
    width:100%;
    height:100%;
    top:0px;
    left:0px;
    z-index:1000;

演示:http://www.jsfiddle.net/TtL7R/1/

【讨论】:

我不确定是否需要不透明度。 @Ultrasonic54321 不需要。它被添加到显示覆盖在滚动时起作用。 哦,伙计,几天来试图弄清楚这一点!!!非常感谢【参考方案3】:
 <style type="text/css">
 html, body 
    margin:0;
    padding:0;
    height:100%; 
  
 #test  
    position:absolute; 
    display:block;
    background:#ccc; 
    height:100%; 
    width:100%;
 
 </style>

【讨论】:

这行不通.. position:absolute 100% 的宽度和高度仍然只适合视口。如果您滚动,它将向上滚动,页面的其余部分将没有覆盖层..【参考方案4】:

我不确定你在用这个 div 做什么,但你也可以设置元素的样式。

【讨论】:

【参考方案5】:
html, body  height: 100%; 
#page  min-height: 100% 

【讨论】:

这是完美的:)

以上是关于制作一个覆盖整个页面的 div的主要内容,如果未能解决你的问题,请参考以下文章

获取一个 div 遍历整个页面

Ionic ion-tabs 不断覆盖我的页面覆盖 Div

使用微调器加载 jQuery 整个 HTML 页面

如何让div滚动时页面不跟着滚动?

在网页制作中如何控制DIV居中显示,用CSS怎么控制背景图片大小?

如何让js调用的页面覆盖原页面