「スティッキーフッター」とは いわゆる「スティッキー フッター」は、新しいフロントエンドの概念や技術ではありません。これは、Web ページの効果を指します。ページ コンテンツの長さが足りない場合は、フッターがブラウザー ウィンドウの下部に固定され、コンテンツの長さが十分であれば、フッターがページの下部に固定されます。ただし、Web ページのコンテンツの長さが十分でない場合は、下部フッターはブラウザ ウィンドウの下部に残ります。 次の例を見てみましょう。コードは次のとおりです。 <div class="header"> </div> <div class="main"> <p>中間部分</p> <p>中間部分</p> <p>中間部分</p> <p>中間部分</p> <p>中間部分</p> <p>中間部分</p> <p>中間部分</p> <p>中間部分</p> <p>中間部分</p> <p>中間部分</p> <p>中間部分</p> <p>中間部分</p> <p>中間部分</p> <p>中間部分</p> <p>中間部分</p> </div> <div class="footer"> <i class="fa fa-copyright" aria-hidden="true"></i> <div>下</div> </div> .ヘッダー{ 背景色: #3498DB; 高さ: 50px; 行の高さ: 50px; テキスト配置: 中央; 色: #fff; } 。主要 { オーバーフロー:自動; ボックスのサイズ: 境界線ボックス; } .フッター{ 背景色: #ECF0F1; 高さ: 50px; 行の高さ: 50px; テキスト配置: 中央; } 注意深い読者なら、この問題に気付いたはずです。フッターの位置は、メインコンテンツの高さに応じて自動的に変わります。メインコンテンツがビューポートの高さよりも小さい場合、フッターは下部に付いていません。では、この問題をどのように解決すればよいのでしょうか? マイナスマージン <div class="main"> <p>中間部分</p> <p>中間部分</p> <p>中間部分</p> <p>中間部分</p> <p>中間部分</p> <p>中間部分</p> <p>中間部分</p> <p>中間部分</p> <p>中間部分</p> <p>中間部分</p> <p>中間部分</p> <p>中間部分</p> <p>中間部分</p> <p>中間部分</p> <p>中間部分</p> <p>中間部分</p> <p>中間部分</p> <p>中間部分</p> <p>中間部分</p> <p>中間部分</p> <p>中間部分</p> <p>中間部分</p> <p>中間部分</p> <p>中間部分</p> </div> <div class="footer"> <i class="fa fa-copyright" aria-hidden="true"></i> <div>下</div> </div> html, 体 { 高さ: 100%; } 。ヘッダ{ 背景色: #3498DB; 高さ: 50px; 行の高さ: 50px; テキスト配置: 中央; 色: #fff; 位置: 固定; 幅: 100%; } 。主要 { 最小高さ: 100%; オーバーフロー:自動; ボックスのサイズ: 境界線ボックス; パディング下部: 50px; パディング上部: 50px; 下マージン: -50px; } .フッター{ 背景色: #ECF0F1; 高さ: 50px; 行の高さ: 50px; テキスト配置: 中央; } 固定高さソリューション 次のプロパティを使用します
calc() は CSS3 で導入され、CSS プロパティ値を宣言するときに計算を実行できるようになります。 いくつかの数値的な状況で使用できます。詳細については、MDNを参照してください。 vh (ビューポートの高さ): ご想像のとおり、ビューポートの高さを表します。 詳細な情報と互換性については、caniuse をご覧ください。 上記のコードを次のように変更します 。主要 { 最小高さ: calc(100vh - 50px - 50px); } これは期待どおりに機能しますが、欠点の 1 つは、ヘッダーとフッターの高さを毎回計算する必要があることです。 これは明らかに完璧ではありません。DOM 構造のレベルが多ければ多いほど、計算する必要があるコンテンツも増えます。 絶対 絶対値については誰もがよく知っていると思うので、ここでは詳細には触れませんが、絶対値要素の位置はどのような基準で計算され、配置されるかということにだけ注意してください。 <div class="header"> ヘッダ <div class="main"> <p>中間部分</p> <p>中間部分</p> <p>中間部分</p> <p>中間部分</p> <p>中間部分</p> <p>中間部分</p> <p>中間部分</p> <p>中間部分</p> <p>中間部分</p> <p>中間部分</p> <p>中間部分</p> <p>中間部分</p> <p>中間部分</p> </div> <div class="footer"> <i class="fa fa-copyright" aria-hidden="true"></i> <div>下</div> </div> html{ 位置: 相対的; 最小高さ: 100%; } 体{ 下部マージン: 50px; } .ヘッダー{ 背景色: #3498DB; 高さ: 50px; 行の高さ: 50px; テキスト配置: 中央; 色: #fff; } 。主要 { オーバーフロー:自動; } .フッター{ 位置: 絶対; 下:0; 幅: 100%; 背景色: #ECF0F1; 高さ: 50px; 行の高さ: 50px; テキスト配置: 中央; } コードは非常にシンプルです。メインの位置アプリケーションは次のとおりです。 1 デフォルトでは、要素がposition:absoluteに設定されている場合、祖先要素にposition: absolute、fixed、relativeが設定されていない場合は デフォルトでは、最初の包含ブロックを基準にしたものになります。 2 どの初期化子にブロックが含まれますか?
これは W3C による包含ブロックの紹介です。この段落の一般的な意味は、ルート要素 (ドキュメント) がデフォルトの初期包含ブロックであり、その初期化ブロックのサイズがビューポートのサイズであるということです。 これらの概念を理解した後、上記のコードを見てみましょう。一目でわかります。 html{ 位置: 相対的; 最小高さ: 100%; } 体{ 下部マージン: 50px; }
フレックスボックス Flexbox は完璧なソリューションです。これは数行の CSS で実現でき、上記のような HTML 要素を計算したり追加したりする必要はありません。 コードを次のように変更します。 <div class="コンテナ"> <div class="header"> </div> <div class="main"> <p>中間部分</p> <p>中間部分</p> <p>中間部分</p> <p>中間部分</p> <p>中間部分</p> <p>中間部分</p> <p>中間部分</p> <p>中間部分</p> <p>中間部分</p> <p>中間部分</p> <p>中間部分</p> <p>中間部分</p> <p>中間部分</p> <p>中間部分</p> <p>中間部分</p> </div> <div class="footer"> <i class="fa fa-copyright" aria-hidden="true"></i> <div>下</div> </div> </div> html, 体 { 高さ: 100%; } 。容器 { ディスプレイ: フレックス; flex-direction: 列; 最小高さ: 100%; } .ヘッダー{ 背景色: #3498DB; 高さ: 50px; 行の高さ: 50px; テキスト配置: 中央; 色: #fff; } 。主要 { オーバーフロー:自動; ボックスのサイズ: 境界線ボックス; フレックス: 1; } .フッター{ 背景色: #ECF0F1; 高さ: 50px; 行の高さ: 50px; テキスト配置: 中央; } 最終的な効果は次のようになります。 負の =margin、固定幅、絶対値はすべて、下部の高さが固定されていることを前提としています。 一般的には absolute および flex 実装を使用することをお勧めします。使用する具体的な実装は、特定のシナリオによって異なります。 以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。 |
<<: HTML フレーム、Iframe、フレームセットの違い
目次セマフォNginx ホットデプロイメント上記のブログ投稿に従ってください。ファイアウォールをオフ...
1. 環境: CentOS7、OpenSSL1.1.1k。 2. コンセプト:ルート証明書: サーバ...
数日前、Server2019の正式版がリリースされたことを知り、面白半分でインストールしてみることに...
前提条件gitをインストールする必要があるインストール手順1. リモートリポジトリからpyenvをク...
Nginx (「エンジン エックス」と発音) は、インターネット上の最大規模のサイトの負荷を処理す...
1. これは理解するのが少し複雑なので、原理を注意深く読んで自分で入力していただければ幸いです。 &...
テーブル user があり、フィールドは id、nick_name、password、email、p...
まずは違いについて話しましょう最後に、書き換えられたルールは、次の場所と一致させるために書き換えられ...
序文今日、自作のコンポーネントを使っていたところ、突然、長い間忘れていたバブリングイベントに遭遇しま...
方法1: onclickイベントを使用する <input type="button&...
1. HTML送信ボタンと下部ボタンの基本構文構造1. HTML送信ボタン入力タグで type=&...
JS でアニメーションを記述する場合、移動前に相対位置を絶対位置に変換してからアニメーション機能を実...
目次目的モジュールのインストール基本的な使い方ポートをスキャンする開いているポートデータの送信データ...
目次React アップロードファイル表示の進行状況デモフロントエンドにReactアプリケーションを素...
設定が有効にならない場合が多いため、幅や高さなどをテーブル内で直接設定しないことをお勧めします。スタ...