使用 Javascript 将页脚保持在底部

Keep the footer at the bottom with Javascript

目前我正在尝试使用 Javascript 将页脚保持在底部。这是结果:

document.getElementsByTagName('body').onload = function() {KeepFoot()};
var element = document.getElementById('container');
var height = element.offsetHeight;

function KeepFoot() {
    if (height < screen.height) {
        document.getElementById("footer").style.position = "fixed";
        document.getElementById("footer").style.bottom = "0";
        document.getElementById("footer").style.left = "0";
        document.getElementById("footer").style.right = "0";
    }
}

我的想法是获取div容器的高度并将其与电脑分辨率的高度进行比较。如果div容器的高度小于PC分辨率的高度,设置为div页脚position: fixed;

但是脚本有问题,因为它不起作用。

另一个问题,我创建的脚本是否适合将页脚保留在底部?

HTML:

<html>
    <head>
        ...
    </head>
    <body>
        <div id="container">
            <div id="header"></div>
            <div id="content"></div>
            <div id="footer"></div>
        </div>
    </body>
</html>

我觉得你的功能很好用。也许缺少的是函数调用。

function KeepFoot() {
    if (height < screen.height) {
        document.getElementById("footer").style.position = "fixed";
        document.getElementById("footer").style.bottom = "0";
        document.getElementById("footer").style.left = "0";
        document.getElementById("footer").style.right = "0";
    }
}

KeepFoot();

看到这个jsfiddle

"DOMContentLoaded" 事件仅在文档准备就绪时触发,类似于 jquery 的 $(document.ready)

并且,对于样式,您可以使用 class 而不是使用 javascript 设置每个样式。

代码

document.addEventListener("DOMContentLoaded", function (event) {
    var element = document.getElementById('container');
    var height = element.offsetHeight;
    if (height < screen.height) {
        document.getElementById("footer").classList.add('stikybottom');
    }
}, false);
#footer.stikybottom {
    position: fixed;
    bottom:0;
    left: 0;
    right:0;
}
<div id="container">
    <div id="header">header</div>
    <div id="content">Conent</div>
    <div id="footer">Something in footer</div>
</div>

如果您想要的是将页脚保留在页面底部,则必须阅读此内容。 cssreset.com/how-to-keep-footer-at-bottom-of-page-with-css/

不用js也能搞定

加载时未调用该函数。您可以像这样将函数 KeepFoot 直接附加到 body 标记而不是像这样调用:

 document.getElementsByTagName('body').onload = function() {KeepFoot()};

或者使用我下面的代码:

 (function() {
    var offsetHeight = document.getElementById('container').offsetHeight;   
    var screenHeight = screen.height;

if(offsetHeight < screenHeight){
    document.getElementById("footer").style.position = "fixed";
    document.getElementById("footer").style.bottom = "0";
    document.getElementById("footer").style.left = "0";
}
})();