JS怎么控制footer一直在页面的底部?JS大神来!

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JS怎么控制footer一直在页面的底部?JS大神来!相关的知识,希望对你有一定的参考价值。

布局是这样的:

<div id="header">......</div>
<div id="main">......</div>
<div id="footer">......</div>

footer是100%显示。
因为main里的内容是不一定的,可能会少,可能会多,内容少的时候footer是靠近main,这样会很难看,也就是footer下方会有大片空白。
怎么用JS控制这个footer,用css试过了:position:absolute; 和 bottom:0; 内容少的时候就可以,多了,滚动条一划下来,就不是在页面最下方了。
求JS大神给段能控制的代码,我试过网上好多,就是不能控制内容少的时候,老靠近在main,下方一大空白。能帮忙解决的采纳会继续加分,急急急!
因为我写的是wordpress博客主题,利用php获取来文章,而文章的内容可能会有短有长,所以不能单独控制。求解决方法!!!在这里先谢谢了

<html>
<HEAD>
<title>让footer总是停留在页面的底部</title>

<script language="javascript">
<!--
function moveFooter()
var iBottom = 0;

if (document.all)
if (parseInt(document.body.scrollHeight) > parseInt(document.body.clientHeight))
iBottom = parseInt(document.body.scrollHeight);

else iBottom = parseInt(document.body.clientHeight);
document.all["lyfooter"].style.pixelTop = iBottom - parseInt(document.all["lyfooter"].style.height);
document.all["lyfooter"].style.visibility = "visible";

else if (document.layers)
if (document.height > self.innerHeight)
iBottom = document.height;

else iBottom = self.innerHeight;
document.layers["lyfooter"].top = parseInt(iBottom - document.layers["lyfooter"].document.height);
document.layers["lyfooter"].visibility = "visible";

else if (document.getElementById) //NS6
if (document.height > self.innerHeight)
iBottom = document.height;

else iBottom = self.innerHeight;
document.getElementById("lyfooter").style.top = (parseInt(iBottom - parseInt(document.getElementById("lyfooter").style.height))) + "px";
document.getElementById("lyfooter").style.visibility = "visible";




//-->
</script>
</HEAD>

<body MS_POSITIONING="GridLayout" onresize="moveFooter()" onload="moveFooter()">
<form id="Form1" method="post">
<!----bottom part--------->
<div id="lyfooter" style="position:absolute;left:0px;top:100px;height:19px;z-index:2;visibility:hidden;">
<table border="0" cellspacing="0" cellpadding="3">
<tr>
<td bgColor="#319a63" class="footnote"><font color="#ffffff" size="2px" face="Verdana, Arial, Helvetica, sans-serif">©
2005 ABCDE, Inc.</font></td>
</tr>
</table>
</div>
<!----/bottom part--------->
</form>
</body>
</HTML>
参考技术A 你是要那种footer一直浮动在窗口最下方,还是正文内容完了之后才看到footer?追问

就是正文看完的,文章长的时候,footer下方不会有大面积空白,而内容少的时候就会有。怎么控制呢?main是不设置高度的。

追答

这个用css就应该可以解决,你虽然不给main设置高度,但是你可以给main设置min-height啊,这样,当内容的高度少于min-height的值时,main就不会继续收缩了,这样不就能保证整个页面上中下三块的布局了嘛

追问

但是不同的分辨率,很难给它确定这个值,如果可以自适应就好了。

追答

你可以试试用百分比来设置最小高度,不过这个我没用过,我在写的时候一般都是写死的。

还有一种方法,用js获取到窗口的大小,然后计算出值,然后用js给main添加min-height属性,不过这段代码你要放在页面的onresize事件处理函数里面

本回答被提问者采纳

页面内容不够高footer始终位于页面的最底部

相信很多前端工程师在开发页面时会遇到这个情况:当整个页面高度不足以占满显示屏一屏,页脚不是在页面最底部,用户视觉上会有点不好看,想让页脚始终在页面最底部,我们可能会想到用:

1.min-height来控制content中间内容区高度来让页面高度能够占满显示屏一屏,但是大型网站页面比较多的情况下footer都是模块化添加进去的,每个页面高度都不会一样,不可能去设置每个页面中间内容区min-height高度,而且用户的显示屏的大小都不一样,无法精确设置min-height高度,无法保证用户看到页面页脚不是在最底部或页面不出现滚动条;

2.页脚固定定位:页脚相对于body固定定位会显示在最底部,但是页面有滚动条时,页面滚动,页脚会悬浮在内容区上,可能以上都不是你想要的效果。

可以用下实例方法解决你的问题:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>猿来是勇者</title>
    </head>
   <!--方法一-->
    <style>
        *{margin: 0; padding: 0;}
        html,body{height:100%;}
        #container{position:relative; width:100%; min-height:100%;padding-bottom: 100px; box-sizing: border-box;}
        header{width: 100%; height: 200px; background: #999;}
        .main{width: 100%; height: 200px; background: orange;float:left;}
        footer{width: 100%; height:100px; /* footer的高度一定要是固定值*/ position:absolute; bottom:0px; left:0px; background: #333;}
    </style>
    <body>
        <div id="container">
            <header>HEADER</header>
            <section class="main">MAIN</section >
            <footer>FOOTER</footer>
        </div>
    </body>
    
    <!--方法二-->
    <!--<style>
        *{margin: 0; padding: 0;}
        html,body{height: 100%;}
        #container{display: flex; flex-direction: column; height: 100%;}
        header{background: #999; flex: 0 0 auto;height:100px;}
        .main{flex: 1 0 auto;}
        .bg{background:orange;height:200px;}
        footer{background: #333; flex: 0 0 auto;height:100px;}
    </style>
    <body>
        <div id="container">
            <header>HEADER</header>
            <section class="main">
                <div class="bg">MAIN</div>
            </section>
            <footer>FOOTER</footer>
        </div>
    </body>-->
</html>

 

 

以上是关于JS怎么控制footer一直在页面的底部?JS大神来!的主要内容,如果未能解决你的问题,请参考以下文章

HTML5的footer怎么在body的内容不满一屏幕时置于页面最底部?求大神指点,谢谢!

js 固定底部 footer

footer高度任意+js实现footer在底部

页面内容不够高footer始终位于页面的最底部

每个HTML都要用同一个header和footer怎么共用啊?

php 页面公共部分 转化为js document.write(); 并由匿名函数包裹