CSS。身高等于文件高度

时间:2017-12-23 18:27:44

标签: css height document absolute

在内容较小且身高:100%的情况下,页脚被按到窗口底部,弹出一个绝对非常长的菜单(比身高更长)会增加文档的高度,从而产生在页脚之后的很多自由空间中。问题是此时身高高于文件高度。

如何使用css强制身高跟随文档的高度。

Example on jsfiddle

body, html {
  height: 100%;
  padding: 0;
  margin: 0;
}
.main {
  border: 1px solid red;
  height: 100%;
}
.ab {
  left: 2em;
  top: 2em;
  right: 10em;
  height: 150vw;
  position: absolute;
  border:1px solid yellow;
}
<div class="main">
 <div class="ab"></div>
</div>
<style>

</style>

UPD。 正在寻找一个css解决方案。 在JS(jQuery)上,可以这样做:

$("body").height($(document).height());

2 个答案:

答案 0 :(得分:0)

问题是由.ab元素position: absolute;引起的。这会导致元素从文档流中取出,从而导致文档高度不变。

.ab更改为position: relative以解决此问题,但这可能需要进行其他一些HTML /布局更改。

&#13;
&#13;
function addElement() {

  document.getElementById("ab").classList.add("show")
}
&#13;
html,
body {
  height: 100%;
  position: relative;
  padding: 0;
  margin: 0;
}
.main {
  border: 1px solid red;
  min-height: 100%;
  box-sizing: border-box;
}
#ab {
  box-sizing: border-box;
  width: 90vw;
  margin: 30px 5vw;
  height: 150vw;
  position: relative;
  border:1px solid yellow;
  display: none;
}

#ab.show {
  display: block;
}
&#13;
<div class="main">
 <div id="ab"></div>
 <button onclick="addElement()">Add tall element</button>
</div>
<style>

</style>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

你可以尝试这个,这将增加主div的高度并删除滚动,否则你可以给溢出y:滚动

    body, html {
      height: 100%;
      padding: 0;
      margin: 0;
    }
   .main {
   border: 1px solid red;
   height:100%;
   overflow-y:scroll;
   position:relative;
}
.ab {
  left: 2em;
  top: 2em;
  right: 10em;
  height: 150vw;
  position: absolute;
  border:1px solid yellow;
}
<div class="main">
 <div class="ab"></div>
</div>
<style>

</style>