ブートストラップ3フッターを下に揃えます。未修理


177

設計中のサイトにBootstrap 3を使用しています。

このサンプルのようなフッターが欲しいです。 サンプル

修正したくないので、ブートストラップnavbar-fixed-bottomで問題が解決しないことに注意してください。常にコンテンツの最下部に配置し、応答性も高くしたいだけです。

どんなガイドでも大歓迎です。


編集:

よくわからなかったらすみません。現在、コンテンツ本文に十分なコンテンツがない場合に発生します。フッターが上に移動すると、下部に空きスペースができます。

これは今私が私のnavbarのために持っているものです

<nav class="navbar navbar-inverse navbar-bottom" style="padding:0 0 120px 0">
        <div class="container">
            <div class="row">
                <div class="col-sm-4">
                    <h5 id='footer-header'> SITEMAP </h3>
                    <div class="col-sm-4" style="padding: 0 0 0 0px">
                        <p>News</p>
                        <p>contact</p>
                    </div>
                    <div class="col-sm-4" style="padding: 0 0 0 0px">
                        <p>FAQ</p>
                        <p>Privacy Policy</p>
                    </div>
                </div>
                <div class="col-sm-4">
                    <h5 id='footer-header'> xxxx </h3>
                    <p>yyyyyyyyyyyyy</p>
                </div>
                <div class="col-sm-4">
                    <h5 id='footer-header'> xxxxx </h3>
                    <p>uuuuuuuuuuuuuuu</p>
                </div>
            </div>
        </div>
    </nav>

CSS

.navbar-bottom {
min-height: 300px;
margin-top: 100px;
background-color: #28364f;
padding-top: 35px;
color:#FFFFFF;
}

問題を引き起こしている、あなたが取り組んでいるサンプルコードはありますか?
badAdviceGuy 2014年

通常のフッターのようですが、Fixedが不要な場合は、スタイルを更新できます。どのような問題が発生していますか?
ミュータント

それがあなたのHTMLの最後のものであるとき、それは常に一番下になります。問題が何であるかを理解するためにコード例を必要とする紛らわしい質問。
Joe Conlin、2014年


@davidpauljunior:これらは私が探しています何をされていないスティッキーフッターです
user3169403

回答:


124

以下の例を参照してください。これにより、ページのコンテンツが少ない場合はフッターが下に固定され、ページのコンテンツが多い場合は通常のフッターのように動作します。

CSS

* {
    margin: 0;
}
html, body {
    height: 100%;
}
.wrapper {
    min-height: 100%;
    height: 100%;
    margin: 0 auto -155px; /* the bottom margin is the negative value of the footer's height */
}
.footer, .push {
    height: 155px; /* .push must be the same height as .footer */
}

HTML

<div class="wrapper">
  <p>Your website content here.</p>
  <div class="push"></div>
</div>
<div class="footer">
  <p>Copyright (c) 2008</p>
</div>

更新:Bootstrapの新しいバージョンは、ラッパーを追加せずにスティッキーフッターを追加する方法を示します。詳細については、Jboy Flagaの回答を参照してください。


リンクが壊れています
Halter

2
ラッパーに2つの高さプロパティ定義があるのはなぜですか?
HardlyNoticeable 2017

@HardlyNoticeableはmin-widthで、コンテンツが少ない場合でもラッパーを強制します。
Surjith SM 2017

なぜ2つの高さプロパティ定義があるのか​​疑問に思います。あなたは@SurjithSMに答えませんでした
Erowlin '19

@Erowlinそれはエラーです。2つの高さプロパティは必要ありません。min-heightだけで十分です。答えを編集しました。
Surjith SM 2017

315

ここにブートストラップからの簡略化されたソリューションがあります(新しいクラスを作成する必要がない場合):http : //getbootstrap.com/examples/sticky-footer-navbar/

そのページを開いたら、ブラウザを右クリックして[ソースを表示]をクリックし、sticky-footer-navbar.cssファイル(http://getbootstrap.com/examples/sticky-footer-navbar/sticky-footer-navbar。 css

このCSSだけが必要であることがわかります

/* Sticky footer styles
-------------------------------------------------- */
html {
  position: relative;
  min-height: 100%;
}
body {
  /* Margin bottom by footer height */
  margin-bottom: 60px;
}
.footer {
  position: absolute;
  bottom: 0;
  width: 100%;
  /* Set the fixed height of the footer here */
  height: 60px;
  background-color: #f5f5f5;
}

このHTMLの

<html>
    ...
    <body>
        <!-- Begin page content -->
        <div class="container">
        </div>
        ...

        <footer class="footer">
        </footer>
    </body>
</html>

19
これは(Bootstrap docs / examplesから)受け入れられる答えになるはずです。
richardm 2015年

5
私の場合、フッターがかなり高いため、これは機能しません。段落だけが必要なのに素晴らしいのですが、私の列にはいくつかの列があります。この方法を使用すると、サイズを小さくすると、フッターの下に余白ができます
NightMICU

9
このBootstrapsスティッキーフッターソリューションではありませんか?OPがこれを意味するとは思いません。私にとって、長いページでは、フッターが画面の下部に表示されましたが、コンテンツの下部(つまり、コンテンツの上)には表示されませんでした。私はポジションを変更する必要がありました。これを機能させるには、(。footerクラスの)相対
Tino Mclaren、

24
このトピックのタイトルに「未修正」がなかった場合、これが正しい答えになります...
ruudy

1
これは固定サイズのフッターでのみ機能します。@ ChristopherTanが提案したフィリップウォルトンのソリューションは、フッターの高さに
関係なく

16

自由に使用できるフレックスボックスを使用してください。ブートストラップ4によって提供されるソリューションは、レスポンシブレイアウトで重複コンテンツを引き続きハンティングします。例:モバイルビューで中断します。最も巧妙なトリックは、ここに示されているflexboxソリューションのデモを使用することです: / solved-by-flexbox / demos / sticky-footer /)この方法では、現在では廃止された解決策である固定高さの問題に対処する必要はありません...この解決策は、ブートストラップ3と4のどちらでも使用できます。

<body class="Site">
  <header></header>
  <main class="Site-content"></main>
  <footer></footer>
</body>

.Site {
  display: flex;
  min-height: 100vh;
  flex-direction: column;
}

.Site-content {
  flex: 1;
}

1
これは非常に賢い解決策です。CSSには、私たちがそれを最大限に活用する方法すらわからないということを提供するには多すぎると思います。
Gilbert

2
このソリューションが大好きです。すごい。
Bagus Aji Santoso

14

更新:これは質問全体に直接回答するわけではありませんが、他の人がこれが役立つと感じるかもしれません。

これはレスポンシブフッターのHTMLです

<footer class="footer navbar-fixed-bottom">
     <div class="container">
     </div>
</footer>

CSSの場合

footer{
    width:100%;
    min-height:100px;    
    background-color: #222; /* This color gets inverted color or you can add navbar inverse class in html */
}

注:この質問の投稿時に、上記のコード行はページコンテンツの下にフッターをプッシュしません。ただし、ページにコンテンツがほとんどない場合、フッターがページの途中までクロールしないようにします。ページコンテンツの下にフッターをプッシュする例については、http://getbootstrap.com/examples/sticky-footer/をご覧ください。


フッターが出会ったときにメインコンテンツが隠されるため、これは実際には悪い解決策です。padding-bottomメインコンテンツコンテナのをフッターの高さに等しく設定する必要があります。そして、ページloadresizeイベント、そしてフッターでも動的に行う必要がありますDOMSubtreeModified
tao

9

まだ苦労している人々のために、答えられた解決策が思い通りに機能しない場合、ここで私が見つけた最も簡単な解決策を示します。

メインコンテンツをラップして、最小ビュー高さを割り当てます。60をスタイルに必要な値に調整します。

<div id="content" style="min-height:60vh"></div>
<div id="footer"></div>

それだけで、かなりうまくいきます。


問題の問題と同じ問題がありました。ここでほとんどすべての高ランクの回答を試した後、これが私にとってうまくいった唯一のものでした。そして、それはすべてのサイズで機能しました。変更したのは「min-height:70vh」だけでした。これは、サイトのヘッダーとフッターのサイズによって異なります。
Arfath

これはもっと高いはずで、要求通りに機能します。
ヤムイモは

これは私のニーズにうまくいきました。希望する結果が得られるまで、min-heightの値を調整してください。
sawyerrken

素晴らしい、これはフッターの配置問題に対する最もシンプルで効率的な解決策です!
Prahlad Yeri

5

Galen Gidmanは、高さが固定されていない応答性のあるスティッキーフッターの問題に対する非常に優れた解決策を投稿しました。彼の完全な解決策は彼のブログで見つけることができます:http : //galengidman.com/2014/03/25/responsive-flexible-height-sticky-footers-in-css/

HTML

<header class="page-row">
  <h1>Site Title</h1>
</header>

<main class="page-row page-row-expanded">
  <p>Page content goes here.</p>
</main>

<footer class="page-row">
  <p>Copyright, blah blah blah.</p>
</footer>

CSS

html,
body { height: 100%; }

body {
  display: table;
  width: 100%;
}

.page-row {
  display: table-row;
  height: 1px;
}

.page-row-expanded { height: 100%; }

これはブートストラップと互換性があるようで、したがって、受け入れられた答えであるはずです、imho。水平スクロールバーが表示されているようで、完璧ではありません。
Florian Mertens、2015年

フロリアン:私には水平スクロールバーはありません。
HardlyNoticeable 2017

4

純粋なCSSソリューションの場合は、2番目の後にスクロールし<hr>ます。最初の答えは最初の答えです(2016年に返されます)


上記のソリューションの主な欠点は、フッターの高さ固定されていることです。
そして、それは現実の世界ではそれをカットするだけではありません。そこでは人々は膨大な数のデバイスを使用し、あなたがそれを期待しないときにそれらを回転させるという悪い習慣を持っています**プーフ!**ページのコンテンツがフッターの後ろに表示されます!

現実の世界では、フッターの高さを計算し、その高さに合わせてページコンテンツを動的に調整する関数が必要padding-bottomです。そして、この小さな関数をページloadresizeイベントだけでなくフッターでも実行する必要がありDOMSubtreeModifiedます(フッターが動的に非同期で更新される場合や、操作時にサイズが変化するアニメーション要素が含まれる場合に備えて)。

jQuery v3.0.0とBootstrap を使用した概念実証は次のとおりv4-alphaですが、それぞれの下位バージョンで動作しないはずの理由はありません。

当初、私はこのソリューションをここに投稿しましたが、この質問の下に投稿すると、より多くの人に役立つかもしれないことに気付きました。

注:私は意図的に$([selector]).accomodateFooter() jQueryプラグインとしてので、ほとんどのレイアウトではが必要な$('body')のではなく、bottom-paddingいくつかのページラッパー要素position:relative(通常はの直接の親footer)があるため、任意のDOM要素で実行できます。。


後で編集(最初の回答から3年以上):

この時点で、動的コンテンツフッターをページの下部に配置するためにJavaScriptを使用することは、もはや許容できるとは考えていません。フレックスボックス、超高速、クロスブラウザを使用して、CSSだけで実現できます。

ここにあります:


3

このメソッドは最小限のマークアップを使用します。すべてのコンテンツを、フッターの高さと同じパディングボトムと負のマージンボトム(例では100px)を持つ.wrapperに入れます。

html, body {
    height: 100%;
}

/* give the wrapper a padding-bottom and negative margin-bottom equal to the footer height */

.wrapper {
    min-height: 100%;
    height: auto;
    margin: 0 auto -100px;
    padding-bottom: 100px;
}
.footer {
    height: 100px;
}

<body>

<div class="wrapper">
  <p>Your website content here.</p>
</div>
<div class="footer">
   <p>Copyright (c) 2014</p>
</div>

</body>

2

またはこれ

<footer class="navbar navbar-default navbar-fixed-bottom">
    <p class="text-muted" align="center">This is a footer</p>
</footer>

1

ブートストラップの場合:

<div class="navbar-fixed-bottom row-fluid">
  <div class="navbar-inner">
    <div class="container">
      Text
    </div>
  </div>
</div>

2
問題は具体的にそれnavbar-fixed-bottomが問題を解決するものではないことを述べています。
p4sh4 2016

1

フッターでnavbar-inverseクラスを使用したため、これらのソリューションはどれも完全に機能しませんでした。しかし、私は機能し、JavaScriptを使用しないソリューションを取得しました。メディアクエリの作成を支援するためにChromeを使用しました。画面のサイズが変更されるとフッターの高さが変化するため、それに注意を払い、それに応じて調整する必要があります。フッターコンテンツ(コンテンツを定義するためにid = "footer"を設定)では、postion = absoluteおよびbottom = 0を使用して、下部に保持する必要があります。また幅:100%。メディアクエリを使用した私のCSSは次のとおりです。min-widthとmax-widthを調整し、いくつかの要素を追加または削除する必要があります。

#footer {
  position: absolute;
  color:  #ffffff;
  width: 100%;
  bottom: 0; 
}
@media only screen and (min-width:1px) and (max-width: 407px)  {
    body {
        margin-bottom: 275px;
    }

    #footer {
        height: 270px; 
    }
}
@media only screen and (min-width:408px) and (max-width: 768px)  {
    body {
        margin-bottom: 245px;
    }

    #footer {
        height: 240px; 
    }
}
@media only screen and (min-width:769px)   {
    body {
        margin-bottom: 125px;
    }

    #footer {
        height: 120px; 
    }
}

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.