100%高度-底部动态高度页脚

3
我有以下网页。
<body>
<div id="everything">
<div id="top_header">TOP BAR WITH INFO. FIXED HEIGHT</div>
<div id="content">
<div id="header"><h1> MENU</h1></div>
<div id="body">CONTENT</div>
</div><!--end content-->
<div id="footer">DYNAMIC HEIGHT DEPENDING ON THE LINKS IN THE FOOTER</div>
</div><!--end everything-->
</body>

以及样式:

    <style type="text/css">
body {
    background-color: #FFFFFF;
    font: 13px arial;
    margin: 0;
    padding: 0;
    width: 100%;
}
#everything {
    background-color: #FFFFFF;
    min-height: 100%;
    margin: auto;
    width: 100%;
}
#content {
    display: block;
    margin: auto;
    width: 1000px;

}
#header {
    padding-bottom: 25px;
    background-color:#666699;
    height:60px;
}
#body {
    background: none repeat scroll 0 0 #FFFFFF;
    margin: 0 auto;
    padding-bottom: 23px;
    background-color:#CC3333;
    height:1500px;
}
#footer {
    display: inline-block;
    position: absolute;
    bottom:0px;
    width: 100%;
    background-color:#FF6600;
    height:70px;
}
#top_header {
    width:100%;
    background-color:#0066CC;
    height:30px;
}
h1{
    margin:0;
}
</style>

我的页脚高度是动态的,我无法更改HTML结构,只能更改CSS。当我在较小的屏幕上查看网页时,“body”的高度大于视口大小时没有问题,但如果我在较大的屏幕上查看网页并且“body”的大小小于视口,则页脚不会固定在底部。此外,如果“body”的大小很大(就像这个例子中一样),它不会将页脚推到底部。你能帮我让页脚始终固定在视口底部,而不知道页脚和包含所有内容的“body”的高度吗?谢谢,Mihai。

您需要在页面主体后立即显示页脚吗?或者,您只需要让它保持在视口底部(这样,如果页面主体非常短,页脚仍将保持在底部)? - mshsayem
如果页面高度非常小,页脚仍然固定在底部。 - Mihai Ilaș
3个回答

0

您可以将页脚位置定义为相对位置并删除绝对位置

#footer{
   position:relative;
}

是的,在这个具体情况下这个方法可行。接下来的一步将是在body中去掉1500像素的高度,即使在“body”中没有太多内容,页脚也会粘着底部,而且整个页面都是视口高度的100%。 - Mihai Ilaș

0

在CSS2中,这是不完全可能的,特别是当内容扩展时,灵活高度的页脚被正确地向下推。您可以通过可变高度将其固定在屏幕底部,但由于您事先不知道具体高度,因此无法相应地设置内容边距/填充底部。

我建议您在页面加载后通过JavaScript测量页脚高度,并将其应用为内容填充/边距底部,这样就可以解决您面临的唯一真正问题。

另一个选择是利用表格,使用包装器和display: table-row/table-cell。我在这里回答了一个类似的问题:https://dev59.com/9mLVa4cB1Zd3GeqPtiZr#9946474


-1
请查看下面的演示。我认为这个解决方案可能会帮助您解决问题。

body {
    background-color: #FFFFFF;
    font: 13px arial;
    margin: 0;
    padding: 0;
    width: 100%;
}
#everything {
    background-color: #FFFFFF;
    min-height: 100%;
    margin: auto;
    width: 100%;
}
#content {
    display: block;
    margin: auto;
    width: 1000px;

}
#header {
    padding-bottom: 25px;
    background-color:#666699;
    height:60px;
}
#body {
    background: none repeat scroll 0 0 #FFFFFF;
    margin: 0 auto;
    padding-bottom: 23px;
    background-color:#CC3333;
    height:1500px;
}
#footer {
    display: inline-block;
    position: sticky;
    bottom:0px;
    width: 100%;
    background-color:#FF6600;
    /* height:70px; */
    bottom: 0;
}
#top_header {
    width:100%;
    background-color:#0066CC;
    height:30px;
}
h1{
    margin:0;
}
<html>


<body>
<div id="everything">
<div id="top_header">TOP BAR WITH INFO. FIXED HEIGHT</div>
<div id="content">
<div id="header"><h1> MENU</h1></div>
<div id="body">CONTENT</div>
</div><!--end content-->
<div id="footer">DYNAMIC HEIGHT DEPENDING ON THE LINKS IN THE FOOTER</div>
</div><!--end everything-->
</body>



</html>


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接