web-dev-qa-db-ja.com

動的な高さのWebサイトでもフッターを下部に保持する方法

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>

このスクリプトは、コードの最後にある必要があります。

21
Rafael Fonseca

Sticky Footerを探していると思います

これを試してください: 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>
27
agarcian

これですべての問題が解決すると思います。

    <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に変更するだけです。コンテンツが画面に収まらない場合は、スクロールバーが表示されます。

33
HenryW

スティッキーフッター(非固定)用の私のお気に入りの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();
});

DEMO:http://codepen.io/anon/pen/ZQxQoR

注:フッターは<footer>で始まり、</footer>で終わる必要があります。このコードをそのまま使用するか、フッターのID /クラスに合わせてコードを変更できます。

17
Nikita 웃

これにより、シンプルなソリューション

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>
9
orenl

以下を使用して、Webページに固定フッターを作成します。

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>

お役に立てれば!

乾杯、

ヴェノ

4
Ali Haider
#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/

3

私はこの質問をチェックして同じ答えを見つけました。これはいつか尋ねられましたが、これはjQueryによって追加された新しい機能かもしれません。しかし、これは現在存在する単純な修正です。

JQueryを使用している場合は、divタグにdata-position = "fixed"を追加するだけです。

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 -->

お役に立てれば。

0
javaJavaJava

これがあなたの探しているものかどうかわかりません:

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

これら2つの記事を参照してください。 http://ryanfait.com/sticky-footer/ および http://css-tricks.com/snippets/css/fixed-footer/

0
Maheep