スティッキーヘッダーとフッターにCSSグリッドを使用する方法
CSSグリッドは、Webレイアウトを大幅に簡素化します。学習曲線がありますが、その直感的な性質により、特にヘッダーとフッターの管理に使用するのが楽しくなります。このチュートリアルでは、CSSグリッドを使用して固定フッターとスティッキーフッターの両方を作成することを示しています。 Rachel Andrewの「The New CSSレイアウト」は、グリッドとFlexBoxに深く飛び込むために強くお勧めします。
プロジェクトの概要
ヘッダー、メインコンテンツ、フッターを使用して、クラシックなHTMLレイアウトを構築します。 2つのフッターバリエーションを実装します。コンテンツの長さに関係なく、ビューポートの底に残っている固定フッターと、底部に接着するが、より長いコンテンツによって押し下げられる伝統的な粘着フッターです。メインコンテンツ領域は、完全なビューポート幅にまたがるか、定義された幅内を中心に順応します。
固定フッターは、粘着性のあるフッターほど一般的ではありませんが、チャールズシュワブのようなサイトで使用されます。それらの実装には、多くの場合、ハードコーディングされたサイズとパディングが含まれます。私たちのアプローチは、これらの制限を回避し、CSSグリッドの柔軟性を活用します。
先に進む前に、Charles Schwabのホームページの固定フッターを調べてください。 DevToolsでコードを検査すると、ハードコーディングされた高さと位置決めが明らかになります。
これらの制約なしに同様の効果を達成しましょう。
初期スタイル
最小限のUIから始めて、CSSグリッドで徐々に強化します。 CodeSandBox(およびその後の反復)は、インタラクティブな例を提供します。
まず、Viewportの全高さを使用していることを確認してください。
体 { マージン:0; / * scrollbarsを防ぐ */ } #アプリ { 高さ:100VH; }
次に、ヘッダー、メイン、フッターセクションとグリッド構造を定義します。この初期構造は、まだ意図したとおりに機能していません。それは基礎として機能します:
体 { マージン:0; } #アプリ { 高さ:100VH; / *グリッドコンテナ設定 */ ディスプレイ:グリッド; Grid-Template-Columns:1fr; Grid-Template-rows:auto 1fr auto; Grid-Template-Areas: 'ヘッダ' '主要' 「フッター」; } #App>ヘッダー{ グリッドエリア:ヘッダー。 } #App> main { グリッドエリア:メイン; パディング:15px 5px 10px 5px; } #App>フッター{ グリッドエリア:フッター。 }
これにより、単一列のレイアウトが作成されます。 1fr
「残りのスペースをとる」という意味で、全幅の列になります。行は、 auto
(ヘッダーとフッター用)と1fr
(メインコンテンツ用の残りスペースを埋めるため)を使用してサイズになります。ハードコーディングされた高さは必要ありません。
コンテンツ統合
提供されたCodeSandboxは、デモンストレーションの目的でReactを使用しますが、CSSグリッドの原則はフレームワークとは無関係です。ヘッダー、メイン、フッターコンポーネントは、それぞれのHTML要素をレンダリングします。請求および設定セクションでは、サンプルコンテンツを提供し、レイアウトの適応性を示します。
初期レイアウトには機能的な「請求」セクションが表示されますが、「設定」はフッターを画面外に押し出します。スクロールはページ全体に影響を及ぼし、ヘッダーが消えます。これに対処しましょう。
ヘッダーとフッターを固定しました
コンテンツがビューポートを超えた場合、 100vh
高さとauto
/ 1fr
の行のサイジングが最初に問題を引き起こします。 overflow: auto
<main></main>
要素は、メインコンテンツ領域内のスクロールを可能にし、ヘッダーとフッターを固定したままにします。
#App> main { グリッドエリア:メイン; オーバーフロー:自動; パディング:15px 5px 10px 5px; }
この更新されたデモは、スクロールと可視性の問題を解決します。
調整可能なメインセクション幅
メインコンテンツを幅600px以内に中央に配置するか、フルビューポートに及ぶようにするために、内部にグリッドをネストします<main></main>
。これは、3つの列( 1fr 600px 1fr
)を使用して、600pxセクションを効果的に中心にしています。
#App> main { ディスプレイ:グリッド; Grid-Template-rows:1fr; Grid-Template-Columns:1FR 600PX 1FR; }
コンテンツは、グリッド座標を使用して配置されます。 a .full
クラスでは、コンテンツが幅全体に及ぶことができます。
#App>セクション{ グリッドエリア:1 / 2/1 / 3; } #App> section.full { グリッドエリア:1/1 / 1/4; }
グリッドラインの使用(3列の4行)の使用に注意してください。ビューポートを縮小すると、固定された600px幅の切り捨ての問題が明らかになります。 minmax(0, 600px)
これを解決し、幅を最大600pxまで調整できるようにします。
主要 { ディスプレイ:グリッド; Grid-Template-rows:1fr; Grid-Template-Columns:1FR Minmax(0、600px)1FR; }
最終的なデモでは、このレスポンシブな動作を紹介します。
伝統的なスティッキーフッター
伝統的なスティッキーフッターを作成するために、グリッド構造を変更します。<main></main>
要素には、グリッド内にフッターが含まれるようになりました。
<div> <header></header> <main> <section></section> <footer></footer> </main> </div>
#app
グリッドは2つの行があるように更新されます。
#アプリ { / *以前と同じ */ Grid-Template-Columns:1fr; グリッドテンプレート列:Auto 1FR; Grid-Template-Areas: 'ヘッダ' '主要'; }
<main></main>
グリッドは、フッターを含めるように調整されています。
#App> main { ディスプレイ:グリッド; Grid-Template-rows:1fr auto; Grid-Template-Columns:1FR Minmax(0、600px)1FR; }
このグリッド内のフッターポジショニング:
#App>フッター{ グリッドエリア:2 /1 / 3/4; }
このセットアップにより、フッターを内のコンテンツによって押し下げることができます<main></main>
、希望するスティッキーフッター効果を作成します。適切なアライメントを確保するために、マイナーパディングの調整が行われました。最終的なデモは、この動作を示しています。セクション要素に追加のスタイリングが適用され、垂直レイアウトを維持しながらコンテンツ領域内の水平スクロールが可能になりました。
結論
実証された技術はCSSグリッドなしでは達成可能ですが、グリッドは統一されたエレガントなソリューションを提供します。固定からスティッキーフッターへの単純な移行によって実証されているように、その柔軟性と使いやすさは、複雑なレイアウトのための強力なツールになります。提示された例は比較的単純で、より野心的なプロジェクトのCSSグリッドの可能性を示しています。
以上がスティッキーヘッダーとフッターにCSSグリッドを使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











それは&#039; Vueチームにそれを成し遂げてくれておめでとうございます。それは大規模な努力であり、長い時間がかかったことを知っています。すべての新しいドキュメントも同様です。

私はこの非常に正当な質問で誰かに書いてもらいました。 Leaは、ブラウザから有効なCSSプロパティ自体を取得する方法についてブログを書いています。それはこのようなものです。

WordPressエディターでユーザーに直接ドキュメントを表示する必要がある場合、それを行うための最良の方法は何ですか?

先日、Corey Ginnivanのウェブサイトから、この特に素敵なビットを見つけました。そこでは、スクロール中にカードのコレクションが互いに積み重ねられていました。

これらのデスクトップアプリがいくつかあり、目標があなたのサイトをさまざまな次元ですべて同時に表示しています。たとえば、書くことができます

CSS Gridは、レイアウトをこれまで以上に簡単にするように設計されたプロパティのコレクションです。何でもするように、少し学習曲線がありますが、グリッドは

Google Fontsが新しいデザイン(ツイート)を展開したようです。最後の大きな再設計と比較して、これははるかに反復的です。違いをほとんど伝えることができません
