我希望实现以下问题的相反行为:CSS推Div到页面底部。也就是说,当内容溢出到滚动条时,我希望页脚位于页面底部,就像Stack Overflow一样。

我有一个div id="footer"和下面的CSS:

#footer {
    position: absolute;
    bottom: 30px;
    width: 100%;
}

这将把div移动到视口的底部——但即使你向下滚动页面,元素也会留在那里,所以它不再在底部。

我怎么能确保div保持在页面的内容底部,即使当内容溢出?我不寻找固定的位置,只寻找元素在所有内容的底部。

图片:


当前回答

这正是定位:fixed的设计目的:

#footer {
    position: fixed;
    bottom: 0;
    width: 100%;
}

这是小提琴:http://jsfiddle.net/uw8f9/

其他回答

这正是定位:fixed的设计目的:

#footer {
    position: fixed;
    bottom: 0;
    width: 100%;
}

这是小提琴:http://jsfiddle.net/uw8f9/

如果你有一个固定高度的页脚(例如712px),你可以用js这样做:

var bgTop = 0;
window.addEventListener("resize",theResize);
function theResize(){
    bgTop = winHeight - 712;
    document.getElementById("bg").style.marginTop = bgTop+"px";
}

不幸的是,如果不添加一点额外的HTML,让一个CSS依赖另一个CSS,就无法做到这一点。

HTML

首先,你需要把你的页眉,页脚和#body包装成#holder div:

<div id="holder">
    <header>.....</header>
    <div id="body">....</div>
    <footer>....</footer>
</div>

CSS

然后将height: 100%设置为html和body(实际的身体,而不是您的#body div),以确保您可以设置最小高度作为子元素的百分比。

现在在#holder div上设置min-height: 100%,这样它就填充了屏幕的内容,并使用position: absolute位于#holder div底部的页脚。

不幸的是,你必须对与页脚高度相同的#body div应用padding-bottom,以确保页脚不位于任何内容之上:

html,body{
    height: 100%
}

#holder{
    min-height: 100%;
    position:relative;
}

#body{
    padding-bottom: 100px;    /* height of footer */
}

footer{
    height: 100px; 
    width:100%;
    position: absolute;
    left: 0;
    bottom: 0; 
}

工作示例,短体:http://jsfiddle.net/ELUGc/

工作实例,长体:http://jsfiddle.net/ELUGc/1/

你没有合上你的;后位:绝对。 否则,您上面的代码将完美地工作!

#footer {
   position:absolute;
   bottom:30px;
   width:100%;
}

这是一个直观的解决方案,使用viewport命令将最小高度设置为视口高度减去页脚高度。

html,body{
height: 100%
}
#nonFooter{
min-height: calc(100vh - 30px)
}

#footer {
height:30px;
margin: 0;
clear: both;
width:100%;
}