ページまたはコンテンツの下部にあるフッターのいずれか低い方

意志

私は次の構造を持っています:

<body>
    <div id="main-wrapper">
        <header>
        </header>
        <nav>
        </nav>
        <article>
        </article>
        <footer>
        </footer>
    </div>
</body>

<article>javascriptを使用してコンテンツを動的にロードしますこのため、<article>ブロックの高さが変わる可能性があります。

<footer>コンテンツが多い場合はページの下部に、コンテンツが数行しかない場合はブラウザウィンドウの下部にブロックを配置したいと思います。

現時点では、どちらか一方を実行できますが、両方を実行することはできません。

だから、私がこれを行う方法を知っている人はいますか?<footer>ページ/コンテンツの下部または画面の下部(どちらが低いかに応じて)に固執するようにしてください。

zzzzBov

ライアン・フェイトの粘着性のあるフッターはとてもいいですが、基本的な構造が欠けていると思います*。


Flexboxバージョン

幸運なことに、古いブラウザをサポートしなくてもflexboxを使用できる場合は、スティッキーフッターが簡単になり、動的なサイズのフッターサポートします。

フレックスボックスを使用してフッターを下部に貼り付ける秘訣は、同じコンテナー内の他の要素を垂直方向に曲げることです。必要なのは、次display: flexflex値より大きいフルハイトのラッパー要素と少なくとも1つの兄弟だけ0です。

CSS:
html,
body {
  height: 100%;
  margin: 0;
  padding: 0;
}

#main-wrapper {
  display: flex;
  flex-direction: column;
  min-height: 100%;
}

article {
  flex: 1;
}

html,
body {
  height: 100%;
  margin: 0;
  padding: 0;
}
#main-wrapper {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
      -ms-flex-direction: column;
          flex-direction: column;
  min-height: 100%;
}
article {
  -webkit-box-flex: 1;
      -ms-flex: 1;
          flex: 1;
}
header {
  background-color: #F00;
}
nav {
  background-color: #FF0;
}
article {
  background-color: #0F0;
}
footer {
  background-color: #00F;
}
<div id="main-wrapper">
   <header>
     here be header
   </header>
   <nav>
   </nav>
   <article>
     here be content
   </article>
   <footer>
     here be footer
   </footer>
</div>


フレックスボックスを使用できない場合、私の基本構造は次のとおりです。

<div class="page">
  <div class="page__inner">
    <header class="header">
      <div class="header__inner">
      </div>
    </header>
    <nav class="nav">
      <div class="nav__inner">
      </div>
    </nav>
    <main class="wrapper">
      <div class="wrapper__inner">
        <div class="content">
          <div class="content__inner">
          </div>
        </div>
        <div class="sidebar">
          <div class="sidebar__inner">
          </div>
        </div>
      </div>
    </main>
    <footer class="footer">
      <div class="footer__inner">
      </div>
    </footer>
  </div>
</div>

これはそれほど遠くないです:

<div id="main-wrapper">
    <header>
    </header>
    <nav>
    </nav>
    <article>
    </article>
    <footer>
    </footer>
</div>

フッターを固定する秘訣は、フッターをその包含要素の下部のパディングに固定することです。これに、フッターの高さが静的である必要がありますが、フッターは通常静的な高さであることがわかりました。

HTML:
<div id="main-wrapper">
    ...
    <footer>
    </footer>
</div>
CSS:
#main-wrapper {
    padding: 0 0 100px;
    position: relative;
}

footer {
    bottom: 0;
    height: 100px;
    left: 0;
    position: absolute;
    width: 100%;
}

#main-wrapper {
  padding: 0 0 100px;
  position: relative;
}

footer {
  bottom: 0;
  height: 100px;
  left: 0;
  position: absolute;
  width: 100%;
}

header {
  background-color: #F00;
}
nav {
  background-color: #FF0;
}
article {
  background-color: #0F0;
}
footer {
  background-color: #00F;
}
<div id="main-wrapper">
   <header>
     here be header
   </header>
   <nav>
   </nav>
   <article>
     here be content
   </article>
   <footer>
     here be footer
   </footer>
</div>

フッターがに固定され#main-wrapperているので#main-wrapper、子が長くない限り、少なくともページの高さである必要がありますこれは、することによって行われ#main-wrapperていmin-heightのを100%また、その親ということを覚えている、htmlbodyだけでなく、ページのように背の高いようにする必要があります。

CSS:
html,
body {
    height: 100%;
    margin: 0;
    padding: 0;
}

#main-wrapper {
    min-height: 100%;
    padding: 0 0 100px;
    position: relative;
}

footer {
    bottom: 0;
    height: 100px;
    left: 0;
    position: absolute;
    width: 100%;
}

html,
body {
  height: 100%;
  margin: 0;
  padding: 0;
}

#main-wrapper {
  min-height: 100%;
  padding: 0 0 100px;
  position: relative;
}

footer {
  bottom: 0;
  height: 100px;
  left: 0;
  position: absolute;
  width: 100%;
}

header {
  background-color: #F00;
}
nav {
  background-color: #FF0;
}
article {
  background-color: #0F0;
}
footer {
  background-color: #00F;
}
 <div id="main-wrapper">
   <header>
     here be header
   </header>
   <nav>
   </nav>
   <article>
     here be content
   </article>
   <footer>
     here be footer
   </footer>
</div>

もちろん、このコードはコンテンツがない場合でもフッターをページの下部から強制的に削除するため、私の判断に疑問を投げかける必要があります。最後のトリックは、が使用するボックスモデルを変更し#main-wrapperて、min-height100%100pxパディング含まれるようにすることです。

CSS:
html,
body {
    height: 100%;
    margin: 0;
    padding: 0;
}

#main-wrapper {
    box-sizing: border-box;
    min-height: 100%;
    padding: 0 0 100px;
    position: relative;
}

footer {
    bottom: 0;
    height: 100px;
    left: 0;
    position: absolute;
    width: 100%;
}

html,
body {
  height: 100%;
  margin: 0;
  padding: 0;
}

#main-wrapper {
  box-sizing: border-box;
  min-height: 100%;
  padding: 0 0 100px;
  position: relative;
}

footer {
  bottom: 0;
  height: 100px;
  left: 0;
  position: absolute;
  width: 100%;
}

header {
  background-color: #F00;
}
nav {
  background-color: #FF0;
}
article {
  background-color: #0F0;
}
footer {
  background-color: #00F;
}
 <div id="main-wrapper">
   <header>
     here be header
   </header>
   <nav>
   </nav>
   <article>
     here be content
   </article>
   <footer>
     here be footer
   </footer>
</div>

これで、元のHTML構造のスティッキーフッターができました。ちょうどことを確認するfooterのがheightに等しい#main-wrappers 'はpadding-bottom、あなたが設定する必要があります。


* Faitの構造に誤りがあるのは、不要な要素を追加しながら.footer.header要素を異なる階層レベルに設定するため.pushです。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Bootstrapの可変高さフッターをページまたはコンテンツのいずれか低い方の下部に強制します

分類Dev

'$'は、Webフォームコンテンツページの下部にあるスクリプトでは定義されていません

分類Dev

高さに応じて、サイトのフッターをページの下部またはコンテンツの下に貼り付けますか?

分類Dev

ページのコンテンツが画面よりも小さい場合でも、フッターを常にページの下部に表示するにはどうすればよいですか?

分類Dev

記事でもあるページのメインコンテンツに<main>または<article>を使用する方が正しいですか?

分類Dev

フッターを(ページではなく)WINDOWの下部にとどめ、コンテンツが重ならないようにする

分類Dev

Chromeではページの下部にコンテンツ/フッターがありますが、Firefoxでは上にスクロールし続けます

分類Dev

CSSの「コンテンツフッター」は、コンテンツがスクロールの高さを超えない場合は下部に固定されますが、超えた場合はコンテンツとともに流れます

分類Dev

フッターをページまたはウィンドウの下部に配置するにはどうすればよいですか?

分類Dev

ページ下部のフッターを通過するコンテンツ

分類Dev

フッターがページ下部のコンテンツと重なる

分類Dev

IE11-上のコンテンツの高さがウィンドウの高さよりも大きい場合に押し下げられる、ページの下部にある「フッター」

分類Dev

複数ページのコンテンツの下にフッターの位置を維持するにはどうすればよいですか

分類Dev

ページ下部の本文コンテンツの下にフッターを保持する方法

分類Dev

Webページのテキストタグの背後にあるリンクを抽出する方法(curl、wget、またはuserscriptのいずれかを使用)

分類Dev

ビューポートの下部に十分なコンテンツがない場合は、常にコンテンツの下部にフッター

分類Dev

十分なコンテンツがない場合でも、ページの下部にフッターを表示します

分類Dev

ヘッダーとフッターでページコンテンツのスクロールが許可されない問題を修正しましたか?

分類Dev

ページを開かずに他のページコンテンツを表示するにはどうすればよいですか

分類Dev

bashに特定のヘッダーがあるWebページからコンテンツを抽出するにはどうすればよいですか?

分類Dev

警告:タイルのメモリ制限を超えました。一部のコンテンツが描画されず、ChromeDriverSeleniumを使用して長いページをレンダリングしているときにスクリーンショットをキャプチャできない場合があります

分類Dev

ページの下部にフッターを配置するにはどうすればよいですか?また、何が間違っていますか?

分類Dev

ページの下部にあるセマンティックフッターには、ページの上部と下部に背景を示すスペースがあります。どうすればこれを取り除くことができますか?以下のリンク

分類Dev

ネストされたルートを使用して、react-router-v4で前のルートのコンテンツを削除せずにページにコンテンツを追加するにはどうすればよいですか?

分類Dev

コンテンツがない場合でも、DIVブロックをページの下部まで強制的に拡張するにはどうすればよいですか?

分類Dev

textareaまたはtextfieldのないブラウザでWebページのコンテンツを編集するにはどうすればよいですか?

分類Dev

どうすれば円形のページを作成できますか?(ページコンテンツの最後までスクロールすると、ページはコンテンツの先頭を下部に追加します)

分類Dev

セルフホスティングWebページであるコンソールまたはWindowsサービスであるVisualStudioプロジェクトの[TypeScript]タブを有効にするにはどうすればよいですか?

分類Dev

フッターのジャンボトロンがページの下部に付着していませんか?

Related 関連記事

  1. 1

    Bootstrapの可変高さフッターをページまたはコンテンツのいずれか低い方の下部に強制します

  2. 2

    '$'は、Webフォームコンテンツページの下部にあるスクリプトでは定義されていません

  3. 3

    高さに応じて、サイトのフッターをページの下部またはコンテンツの下に貼り付けますか?

  4. 4

    ページのコンテンツが画面よりも小さい場合でも、フッターを常にページの下部に表示するにはどうすればよいですか?

  5. 5

    記事でもあるページのメインコンテンツに<main>または<article>を使用する方が正しいですか?

  6. 6

    フッターを(ページではなく)WINDOWの下部にとどめ、コンテンツが重ならないようにする

  7. 7

    Chromeではページの下部にコンテンツ/フッターがありますが、Firefoxでは上にスクロールし続けます

  8. 8

    CSSの「コンテンツフッター」は、コンテンツがスクロールの高さを超えない場合は下部に固定されますが、超えた場合はコンテンツとともに流れます

  9. 9

    フッターをページまたはウィンドウの下部に配置するにはどうすればよいですか?

  10. 10

    ページ下部のフッターを通過するコンテンツ

  11. 11

    フッターがページ下部のコンテンツと重なる

  12. 12

    IE11-上のコンテンツの高さがウィンドウの高さよりも大きい場合に押し下げられる、ページの下部にある「フッター」

  13. 13

    複数ページのコンテンツの下にフッターの位置を維持するにはどうすればよいですか

  14. 14

    ページ下部の本文コンテンツの下にフッターを保持する方法

  15. 15

    Webページのテキストタグの背後にあるリンクを抽出する方法(curl、wget、またはuserscriptのいずれかを使用)

  16. 16

    ビューポートの下部に十分なコンテンツがない場合は、常にコンテンツの下部にフッター

  17. 17

    十分なコンテンツがない場合でも、ページの下部にフッターを表示します

  18. 18

    ヘッダーとフッターでページコンテンツのスクロールが許可されない問題を修正しましたか?

  19. 19

    ページを開かずに他のページコンテンツを表示するにはどうすればよいですか

  20. 20

    bashに特定のヘッダーがあるWebページからコンテンツを抽出するにはどうすればよいですか?

  21. 21

    警告:タイルのメモリ制限を超えました。一部のコンテンツが描画されず、ChromeDriverSeleniumを使用して長いページをレンダリングしているときにスクリーンショットをキャプチャできない場合があります

  22. 22

    ページの下部にフッターを配置するにはどうすればよいですか?また、何が間違っていますか?

  23. 23

    ページの下部にあるセマンティックフッターには、ページの上部と下部に背景を示すスペースがあります。どうすればこれを取り除くことができますか?以下のリンク

  24. 24

    ネストされたルートを使用して、react-router-v4で前のルートのコンテンツを削除せずにページにコンテンツを追加するにはどうすればよいですか?

  25. 25

    コンテンツがない場合でも、DIVブロックをページの下部まで強制的に拡張するにはどうすればよいですか?

  26. 26

    textareaまたはtextfieldのないブラウザでWebページのコンテンツを編集するにはどうすればよいですか?

  27. 27

    どうすれば円形のページを作成できますか?(ページコンテンツの最後までスクロールすると、ページはコンテンツの先頭を下部に追加します)

  28. 28

    セルフホスティングWebページであるコンソールまたはWindowsサービスであるVisualStudioプロジェクトの[TypeScript]タブを有効にするにはどうすればよいですか?

  29. 29

    フッターのジャンボトロンがページの下部に付着していませんか?

ホットタグ

アーカイブ