即使使用动态高度网站,如何将页脚保持在底部

Posted

技术标签:

【中文标题】即使使用动态高度网站,如何将页脚保持在底部【英文标题】:How to keep footer at the bottom even with dynamic height website 【发布时间】:2012-02-07 14:28:26 【问题描述】:

当我有一个使用 CSS 动态设置高度(例如从数据库获取信息)的页面时,如何将页脚 div 始终保留在窗口底部?


如果你想使用 jQuery,我想出了这个并且工作正常:

设置页脚的 CSS:

#footer  position:absolute; width:100%; height:100px; 

设置脚本:

<script>
  x = $('#div-that-increase-height').height()+20; // +20 gives space between div and footer
  y = $(window).height();    
  if (x+100<=y) // 100 is the height of your footer
    $('#footer').css('top', y-100+'px');// again 100 is the height of your footer
    $('#footer').css('display', 'block');
  else
    $('#footer').css('top', x+'px');
    $('#footer').css('display', 'block');
  
</script>

此脚本必须位于代码的末尾;

【问题讨论】:

【参考方案1】:

我认为这会解决你所有的问题:

    <script>

  $(document).ready(function() 

   var docHeight = $(window).height();
   var footerHeight = $('#footer').height();
   var footerTop = $('#footer').position().top + footerHeight;

   if (footerTop < docHeight) 
    $('#footer').css('margin-top', 10+ (docHeight - footerTop) + 'px');
   
  );
 </script>

您至少需要一个带有#footer 的元素

如果内容适合屏幕而不需要滚动条,只需将值 10 更改为 0 如果内容不适合屏幕,将显示滚动条。

【讨论】:

var docHeight = $(document).height();将始终将页脚保持在页面内容下方 我建议使用 $('#footer').outerHeight();而不是 .height()【参考方案2】:

我相信您正在寻找一个粘滞页脚

试试这个:https://web.archive.org/web/20161117191810/http://ryanfait.com/sticky-footer/(存档)

来自上面的文章:

layout.css:

* 
    margin: 0;

html, body 
    height: 100%;

.wrapper 
    min-height: 100%;
    height: auto !important;
    height: 100%;
    margin: 0 auto -142px; /* the bottom margin is the negative value of the footer's height */

.footer, .push 
    height: 142px; /* .push must be the same height as .footer */


/*

Sticky Footer by Ryan Fait
http://ryanfait.com/

*/

html 页面:

<html>
    <head>
        <link rel="stylesheet" href="layout.css" ... />
    </head>
    <body>
        <div class="wrapper">
            <p>Your website content here.</p>
            <div class="push"></div>
        </div>
        <div class="footer">
            <p>Copyright (c) 2008</p>
        </div>
    </body>
</html>

【讨论】:

【参考方案3】:

我最喜欢的粘性页脚(非固定)的 jQuery/CSS 解决方案是这样的:

CSS:

html 
    position: relative;
    min-height: 100%;

footer 
    display:none;
    position: absolute;
    left: 0;
    bottom: 0;
    height: auto;
    width: 100%;

jQuery:

function footerAlign() 
  $('footer').css('display', 'block');
  $('footer').css('height', 'auto');
  var footerHeight = $('footer').outerHeight();
  $('body').css('padding-bottom', footerHeight);
  $('footer').css('height', footerHeight);



$(document).ready(function()
  footerAlign();
);

$( window ).resize(function() 
  footerAlign();
);

演示: http://codepen.io/anon/pen/ZQxQoR

注意:您的页脚必须以 &lt;footer&gt; 开头并以 &lt;/footer&gt; 结尾才能按原样使用此代码,或者您可以修改代码以匹配您的页脚的 id/类。

【讨论】:

对我来说最好的解决方案! +1 这太棒了,非常感谢,我花了 6 多个小时在纯 CSS 的解决方案上浪费时间 - 有时需要一点 jQuery! 非常适合非固定但有粘性的页脚!【参考方案4】:

这里是一个简单的解决方案

CSS:

.footer_wrapper   width:100%;     background-color:#646464; 
.footer_wrapper.fixed position:fixed; bottom:0px;

JS:

if ($(".Page").height()<$(window).height())
        $(".footer_wrapper").addClass("fixed");
    else
        $(".footer_wrapper").removeClass("fixed");
    

HTML:

<div class="Page"> 

        /* PAGE CONTENT */

        <div class="footer_wrapper" >

            /* FOOTER CONTENT */

        </div>
    </div>

【讨论】:

【参考方案5】:

使用以下方法在您的网页上制作固定页脚:

CSS:

body, html

    margin: 0px; padding: 0px;


#footer

    width: 100%;
    height: 30px;
    position: fixed;
    bottom: 0px;
    left: 0px;
    right: 0px;
    /*text-align, background-color, and other specific styles can be applied here. You can change the height from 30px to anything which suits your needs. You can even comment Left: 0px & Right: 0px, but to make sure that it works in all browsers, lets leave them there.*/

HTML:

/*Place this div anywhere on the page, inside the form tags.*/
<div id="footer">
/*Your text/elements goes here*/
</div>

希望这会有所帮助!

干杯,

维诺

【讨论】:

【参考方案6】:
#footer 
   position:fixed;
   left:0px;
   bottom:0px;
   height:30px;
   width:100%;
   background:#999;


/* IE 6 */
* html #footer 
   position:absolute;
   top:expression((0-(footer.offsetHeight)+(document.documentElement.clientHeight ? document.documentElement.clientHeight : document.body.clientHeight)+(ignoreMe = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop))+'px');

查看工作示例,

http://jsfiddle.net/RC3YX/

【讨论】:

页脚覆盖了页面底部的文字。 :( 迄今为止我看到的最简单和最好的解决方案。【参考方案7】:

不确定这是否是您要找的:

<div style="position: fixed; bottom: 0px; left: 0px; right: 0px;">footer</div>

【讨论】:

【参考方案8】:

见这两篇文章。 http://ryanfait.com/sticky-footer/ 和 http://css-tricks.com/snippets/css/fixed-footer/

【讨论】:

【参考方案9】:

我正在检查这个问题以找到相同的答案。以前有人问过这个问题,也许这是 jQuery 添加的一个新特性。但这是一个现在存在的简单修复:

如果您使用 jQuery,只需将 data-position="fixed" 添加到 div 标签即可。

http://demos.jquerymobile.com/1.2.0/docs/toolbars/bars-fixed.html

<div data-role="footer" data-position="fixed">
        <h5>footer - page 3</h5>
        </div><!-- /footer -->

希望这会有所帮助。

【讨论】:

以上是关于即使使用动态高度网站,如何将页脚保持在底部的主要内容,如果未能解决你的问题,请参考以下文章

Vue组件更改时将页脚保留在页面底部

页面底部高度可变的页脚[重复]

网站页脚始终保持底部

即使内容不够大,也将页脚强制放在屏幕底部(不粘)

如何将页脚固定在页面底部

如何将页脚保持在屏幕底部[重复]