在内容较小且身高:100%的情况下,页脚被按到窗口底部,弹出一个绝对非常长的菜单(比身高更长)会增加文档的高度,从而产生在页脚之后的很多自由空间中。问题是此时身高高于文件高度。
如何使用css强制身高跟随文档的高度。
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());
答案 0 :(得分:0)
问题是由.ab
元素position: absolute;
引起的。这会导致元素从文档流中取出,从而导致文档高度不变。
将.ab
更改为position: relative
以解决此问题,但这可能需要进行其他一些HTML /布局更改。
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;
答案 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>