在绝对 div 上设置高度 100%

Posted

技术标签:

【中文标题】在绝对 div 上设置高度 100%【英文标题】:Set height 100% on absolute div 【发布时间】:2012-12-22 11:18:21 【问题描述】:

我遇到了覆盖 100% 高度 div 的问题。我可以使用固定位置来解决封面问题,但这并不是我真正想要的,因为您应该能够在“封面”上向下滚动 > 所以分辨率低于我的人可以看到整个内容。

代码示例:

html

<body>
<div>Overlay example text</div>
</body>

CSS

body 
    float: left;
    height: 3000px;
    width: 100%;

body div 
    position: absolute;
    height: 100%;
    width: 100%;
    background-color: yellow;

问题:div的高度100%只包含100%的webbrowser/viewport,但我希望它覆盖整个body。

提前致谢:)

【问题讨论】:

使用 JQUery 以绝对位置调整 DIV 的大小 这是 CSS 的第一个问题..min-height 并没有真正保证名称的含义:/ 【参考方案1】:

尝试添加

position:relative

你的体型。每当绝对定位任何东西时,您需要将父容器或祖先容器之一相对定位(或静态的默认位置以外的任何东西),因为这将使项目相对于所定位的祖先容器绝对定位。

由于您没有定位元素,css 将不知道 div 绝对定位到什么,因此不知道要采用 100% 的高度

【讨论】:

感谢您提供有用的信息,尽管我不得不放一个浮动:也可以在上面工作:) 左边的浮点数在您的原始代码中,没有任何区别:jsfiddle.net/rvKPq/3 对于任何阅读的人:我认为这应该是正确的答案(并且有更高的赞成票),因为它首先正确地提供了解决方案,并且它为解决方案添加了解释而不仅仅是代码粘贴。 我也认为这是最好的答案。 颠倒这个答案的逻辑,我添加了 position: absolute to the child .... 和宾果游戏!为什么它起作用我不知道!!!【参考方案2】:

http://jsbin.com/ubalax/1/edit.你可以在这里看到结果

body 
    position: relative;
    float: left;
    height: 3000px;
    width: 100%;

body div 
    position: absolute;
    height: 100%;
    width: 100%;
    top:0;
    left:0;
    background-color: yellow;

【讨论】:

好的,所以每个人都在寻找正确答案的路上,但是 float: left 和 position: relative on body 解决了它。谢谢! 我完全不知道为什么会这样,但确实如此......当你发现物理停止工作的现实时,这是这些悲伤的时刻之一。 不是float 有什么不同,而是position: relative;position: absolute; 根据相对父母工作,这就是为什么这样做。 “绝对定位的元素相对于最近定位的祖先(非静态)定位。”更多信息在这里:developer.mozilla.org/en-US/docs/Web/CSS/position @Cthulhu 是对的。我知道为什么有人会将float: left 添加到正文中。我的意思是它不会造成任何伤害,但仍然...... 3000px 没有意义,因为它会增加滚动和不必要的空间,修复?【参考方案3】:

很少有答案给出高度和宽度为 100% 的解决方案,但我建议您不要在 css 中使用百分比,使用顶部/底部和左/右定位。

这是一种更好的方法,可以让您控制边距。

代码如下:

body 
    position: relative;
    height: 3000px;

body div 

    top:0px;
    bottom: 0px;
    right: 0px;
    left:0px;
    background-color: yellow;
    position: absolute;

【讨论】:

这是对我有用的解决方案。我从来不知道你可以按位置拉伸图像。【参考方案4】:

完全拉伸(水平/垂直)

接受的答案很棒。只是想为其他来这里的人指出一些事情。在这些情况下,边距不是必需的。如果您想要一个具有特定“边距”的居中布局,您可以将它们添加到右侧和左侧,如下所示:

.stretched 
  position: absolute;
  right: 50px;  top: 0;  bottom: 0; left: 50px;
  margin: auto;

这非常有用。

居中 div(垂直/水平)

作为奖励,绝对居中可用于获得极其简单的居中:

.centered 
  height: 100px;  width: 100px;  
  right: 0;  top: 0;  bottom: 0; left: 0;
  margin: auto;
  position: absolute;

【讨论】:

【参考方案5】:

另一个不使用任何高度但仍填充 100% 可用高度的解决方案。签出这个,例如在 codepen 上。 http://codepen.io/gauravshankar/pen/PqoLLZ

对于这个 html 和 body 应该有 100% 的高度。此高度等于视口高度。

使内部 div 位置为绝对值,并给顶部和底部 0。这会将 div 填充到可用高度。 (身高等于身体。)

html代码:

<head></head>

<body>
  <div></div>
</body>

</html>

css代码:

* 
  margin: 0;
  padding: 0;


html,
body 
  height: 100%;
  position: relative;


html 
  background-color: red;


body 
  background-color: green;


body> div 
  position: absolute;
  background-color: teal;
  width: 300px;
  top: 0;
  bottom: 0;

【讨论】:

【参考方案6】:

我没有使用body,而是使用html

html 
   min-height:100%;
   position: relative;


div 
   position: absolute;

   top: 0px;
   bottom: 0px;
   right: 0px;
   left: 0px;

【讨论】:

将顶部和底部都设置为 0 对我来说是这样做的

以上是关于在绝对 div 上设置高度 100%的主要内容,如果未能解决你的问题,请参考以下文章

CSS设置div层充满整个网页

CSS:将 div 高度设置为 100% - 像素

CSS:将 div 高度设置为 100% - 像素

CSS:将 div 高度设置为 100% - 像素

CSS:将 div 高度设置为 100% - 像素

html、body高度