CSSグリッドレイアウトを使用するためにサイトを再設計します
CSSグリッドは、最近のWeb開発の新しいホットなトレンドです。テーブルのレイアウトとフロートを忘れてください:ウェブサイトを設計する新しい方法はすでにここにあります!このテクノロジーは、複数のレイアウト領域を複数のCSSルールで定義する2次元グリッドを導入します。
グリッドは、960Gやブートストラップグリッドなどのサードパーティのフレームワークを作成できます。この機能はすべての主要なブラウザによってサポートされていますが、インターネットエクスプローラーは仕様の古いバージョンを実装しています。 グリッドレイアウトを初めて使用する場合は、CSSグリッドの初心者向けガイドをご覧ください。キーテイクアウト
CSSグリッドレイアウトは、マルチコラムレイアウトの作成を簡素化し、フロートやディスプレイテーブルなどの古いテクニックの必要性を排除します。 CSSグリッドにより、グリッド領域を簡単に再配置およびサイズ変更できるようになり、ブートストラップのような従来のCSSフレームワークと比較して、より柔軟で直感的な設計方法になります。
CSSグリッドの実装では、グリッド、列と行のセットアップ、および単純なCSSルールを使用して指定されたグリッド領域に要素を配置するコンテナを表示します。CSSグリッドは本質的に応答し、最小限のメディアクエリを使用して、さまざまな画面サイズのコンテンツの簡単な再編成を可能にします。 インターネットエクスプローラー、インラインブロック、メディアクエリを使用したフォールバックスタイルなど、CSSグリッドを完全にサポートしていないブラウザの場合、レイアウトがまだ効果的にレンダリングされることを保証します。
CSSグリッドとフレックスボックスを組み合わせて複雑な設計要件を処理し、CSSグリッドの最新のWebデザインにおける互換性と汎用性を紹介できます。- 何を構築するのか
- それで、ヘッダー、メインコンテンツ領域、右側のサイドバー、スポンサーのリスト、フッターを備えた典型的なWebサイトレイアウトを作成するように求められました。
- 別の開発者はすでにこのタスクを解決しようとしており、フロート、ディスプレイ:テーブル、およびいくつかのClearFixハックを含むソリューションを思いつきました。この既存のレイアウトを「初期」と呼びます。 Pen SP:CodepenのSitePoint(@SitePoint)のフロート付きマルチコラムレイアウトを参照してください。
- 最近まで、フロートはそのようなレイアウトを作成するための最良の選択肢であると考えられていました。それ以前は、HTMLテーブルを利用する必要がありましたが、多くの欠点がありました。具体的には、このようなテーブルレイアウトは非常に剛性が高く、多くのタグ(テーブル、TR、TD、THなど)が必要であり、意味的には、これらのタグはレイアウトを設計するのではなく、テーブルデータを提示するために使用されます。
しかし、CSSは進化し続けており、今ではCSSグリッドがあります。概念的には、古いテーブルレイアウトに似ていますが、より柔軟なレイアウトを備えたセマンティックHTML要素を使用できます。 グリッドの計画
最初に
最初に:ドキュメントの基本的なHTML構造を定義する必要があります。その前に、最初の例がどのように機能するかについて簡単に説明しましょう。次のメインブロックがあります:- .Containerは、左と右に小さなマージンを持つグローバルなラッパーです。
- .main-headerは、.logo(スペースの20%を占有し、左に浮かんでいる)と.main-menu(スペースの79%を占有し、右に浮かぶ)を含むヘッダーです。ヘッダーには、フロートをクリアするためのハッキーな修正も割り当てられています。 .content-area-wrapperは、メインの.content-area(左に浮かんでいるマージン用に予約されたスペースを引いた1レムの66.6%マイナス1レムを占める)と.sidebar(スペースの33.3%を占める)をラップし、右に浮かんでいます)。ラッパー自体には、clearfix。
- も割り当てられています .sponsors-wrapperには、スポンサーのロゴが含まれています。内部には、表示プロパティがテーブルに設定された.ponsorsセクションがあります。各スポンサーは、テーブルセルとして表示されます。
- .footerは私たちのフッターであり、スペースの100%までのスパンです。
- 新しいレイアウトは最初のレイアウトと非常によく似ていますが、1つの例外を除きます。Clearfixesが不要になるため、.main-Headerと.content-Area-wrapperラッパーは追加されません。これがHTML:
- の新しいバージョンです
<span><span><span><div</span> class<span>="container"</span>></span> </span> <span><span><span><header</span> class<span>="logo"</span>></span> </span> <span><span><span><h1</span>></span><span><span><a</span> href<span>="#"</span>></span>DemoSite<span><span></a</span>></span><span><span></h1</span>></span> </span> <span><span><span></header</span>></span> </span> <span><span><span><nav</span> class<span>="main-menu"</span>></span> </span> <span><span><span><ul</span>></span> </span> <span><span><span><li</span> class<span>="main-menu__item"</span>></span><span><span><a</span> href<span>="#"</span>></span>Our clients<span><span></a</span>></span><span><span></li</span>></span> </span> <span><span><span><li</span> class<span>="main-menu__item"</span>></span><span><span><a</span> href<span>="#"</span>></span>Products<span><span></a</span>></span><span><span></li</span>></span> </span> <span><span><span><li</span> class<span>="main-menu__item"</span>></span><span><span><a</span> href<span>="#"</span>></span>Contact<span><span></a</span>></span><span><span></li</span>></span> </span> <span><span><span></ul</span>></span> </span> <span><span><span></nav</span>></span> </span> <span><span><span><main</span> class<span>="content-area"</span>></span> </span> <span><span><span><h2</span>></span>Welcome!<span><span></h2</span>></span> </span> <span><span><span><p</span>></span> </span> Content <span><span><span></p</span>></span> </span> <span><span><span></main</span>></span> </span> <span><span><span><aside</span> class<span>="sidebar"</span>></span> </span> <span><span><span><h3</span>></span>Additional stuff<span><span></h3</span>></span> </span> <span><span><span><ul</span>></span> </span> <span><span><span><li</span>></span>Items<span><span></li</span>></span> </span> <span><span><span><li</span>></span>Are<span><span></li</span>></span> </span> <span><span><span><li</span>></span>Listed<span><span></li</span>></span> </span> <span><span><span><li</span>></span>Here<span><span></li</span>></span> </span> <span><span><span><li</span>></span>Wow!<span><span></li</span>></span> </span> <span><span><span></ul</span>></span> </span> <span><span><span></aside</span>></span> </span> <span><span><span><section</span> class<span>="sponsors-wrapper"</span>></span> </span> <span><span><span><h2</span>></span>Our sponsors<span><span></h2</span>></span> </span> <span><span><span><section</span> class<span>="sponsors"</span>></span> </span> <span><span><span><figure</span> class<span>="sponsor"</span>></span> </span> <span><span><span><img</span> src<span>="https://via.placeholder.com/150x150"</span>></span> </span> <span><span><span></figure</span>></span> </span> <span><span><span><figure</span> class<span>="sponsor"</span>></span> </span> <span><span><span><img</span> src<span>="https://via.placeholder.com/200x150"</span>></span> </span> <span><span><span></figure</span>></span> </span> <span><span><span><figure</span> class<span>="sponsor"</span>></span> </span> <span><span><span><img</span> src<span>="https://via.placeholder.com/100x200"</span>></span> </span> <span><span><span></figure</span>></span> </span> <span><span><span><figure</span> class<span>="sponsor"</span>></span> </span> <span><span><span><img</span> src<span>="https://via.placeholder.com/100x100"</span>></span> </span> <span><span><span></figure</span>></span> </span> <span><span><span><figure</span> class<span>="sponsor"</span>></span> </span> <span><span><span><img</span> src<span>="https://via.placeholder.com/200x200"</span>></span> </span> <span><span><span></figure</span>></span> </span> <span><span><span></section</span>></span> </span> <span><span><span></section</span>></span> </span> <span><span><span><footer</span> class<span>="footer"</span>></span> </span> <span><span><span><p</span>></span> </span> <span title="©">© 2018 DemoSite. White&Sons LLC. All rights (perhaps) reserved. </span> <span><span><span></p</span>></span> </span> <span><span><span></footer</span>></span> </span><span><span><span></div</span>></span> </span>
ログイン後にコピーログイン後にコピーログイン後にコピーログイン後にコピーメニュー
- メインコンテンツ
- サイドバー
- スポンサー
- フッター
- 通常、モバイルファーストアプローチを実装することをお勧めします。つまり、モバイルレイアウトから開始してから、より大きな画面にスタイルを追加します。この場合、これは必要ありません。なぜなら、既に小画面デバイスの線形ビューに戻る初期レイアウトを適応させるからです。したがって、グリッドの実装に焦点を当てることから始めましょう。その後、応答性とフォールバックルールについて話します。したがって、スキームに戻り、グリッド列をどのように配置できるかを確認してください。
スキームに続いて、各エリアに一意の名前を付けます。これらは、以下に定義されているレイアウトで使用されます:
ディスプレイプロパティをグリッドに設定し、3つの列を定義し、メインコンテナの左右に小さなマージンを追加します。
<span><span><span><div</span> class<span>="container"</span>></span> </span> <span><span><span><header</span> class<span>="logo"</span>></span> </span> <span><span><span><h1</span>></span><span><span><a</span> href<span>="#"</span>></span>DemoSite<span><span></a</span>></span><span><span></h1</span>></span> </span> <span><span><span></header</span>></span> </span> <span><span><span><nav</span> class<span>="main-menu"</span>></span> </span> <span><span><span><ul</span>></span> </span> <span><span><span><li</span> class<span>="main-menu__item"</span>></span><span><span><a</span> href<span>="#"</span>></span>Our clients<span><span></a</span>></span><span><span></li</span>></span> </span> <span><span><span><li</span> class<span>="main-menu__item"</span>></span><span><span><a</span> href<span>="#"</span>></span>Products<span><span></a</span>></span><span><span></li</span>></span> </span> <span><span><span><li</span> class<span>="main-menu__item"</span>></span><span><span><a</span> href<span>="#"</span>></span>Contact<span><span></a</span>></span><span><span></li</span>></span> </span> <span><span><span></ul</span>></span> </span> <span><span><span></nav</span>></span> </span> <span><span><span><main</span> class<span>="content-area"</span>></span> </span> <span><span><span><h2</span>></span>Welcome!<span><span></h2</span>></span> </span> <span><span><span><p</span>></span> </span> Content <span><span><span></p</span>></span> </span> <span><span><span></main</span>></span> </span> <span><span><span><aside</span> class<span>="sidebar"</span>></span> </span> <span><span><span><h3</span>></span>Additional stuff<span><span></h3</span>></span> </span> <span><span><span><ul</span>></span> </span> <span><span><span><li</span>></span>Items<span><span></li</span>></span> </span> <span><span><span><li</span>></span>Are<span><span></li</span>></span> </span> <span><span><span><li</span>></span>Listed<span><span></li</span>></span> </span> <span><span><span><li</span>></span>Here<span><span></li</span>></span> </span> <span><span><span><li</span>></span>Wow!<span><span></li</span>></span> </span> <span><span><span></ul</span>></span> </span> <span><span><span></aside</span>></span> </span> <span><span><span><section</span> class<span>="sponsors-wrapper"</span>></span> </span> <span><span><span><h2</span>></span>Our sponsors<span><span></h2</span>></span> </span> <span><span><span><section</span> class<span>="sponsors"</span>></span> </span> <span><span><span><figure</span> class<span>="sponsor"</span>></span> </span> <span><span><span><img</span> src<span>="https://via.placeholder.com/150x150"</span>></span> </span> <span><span><span></figure</span>></span> </span> <span><span><span><figure</span> class<span>="sponsor"</span>></span> </span> <span><span><span><img</span> src<span>="https://via.placeholder.com/200x150"</span>></span> </span> <span><span><span></figure</span>></span> </span> <span><span><span><figure</span> class<span>="sponsor"</span>></span> </span> <span><span><span><img</span> src<span>="https://via.placeholder.com/100x200"</span>></span> </span> <span><span><span></figure</span>></span> </span> <span><span><span><figure</span> class<span>="sponsor"</span>></span> </span> <span><span><span><img</span> src<span>="https://via.placeholder.com/100x100"</span>></span> </span> <span><span><span></figure</span>></span> </span> <span><span><span><figure</span> class<span>="sponsor"</span>></span> </span> <span><span><span><img</span> src<span>="https://via.placeholder.com/200x200"</span>></span> </span> <span><span><span></figure</span>></span> </span> <span><span><span></section</span>></span> </span> <span><span><span></section</span>></span> </span> <span><span><span><footer</span> class<span>="footer"</span>></span> </span> <span><span><span><p</span>></span> </span> <span title="©">© 2018 DemoSite. White&Sons LLC. All rights (perhaps) reserved. </span> <span><span><span></p</span>></span> </span> <span><span><span></footer</span>></span> </span><span><span><span></div</span>></span> </span>
ログイン後にコピーログイン後にコピーログイン後にコピーログイン後にコピーディスプレイ:グリッドはグリッドコンテナを定義し、子供に特別なフォーマットコンテキストを設定します。 FRは、「グリッドコンテナの自由空間の一部」を意味する特別なユニットです。 2 6 4は12、6 /12 = 0.5を与えます。それは、中央の列が空きスペースの50%を占めることを意味します。
また、行と列の間に間隔を追加したい:これを行ったことで、個々の領域で作業できます。しかし、このセクションをまとめる前に、一般的なスタイルをすばやく追加しましょう。<span><span>.logo</span> { </span> <span>grid-area: logo; </span><span>} </span> <span><span>.main-menu</span> { </span> <span>grid-area: menu; </span><span>} </span> <span><span>.content-area</span> { </span> <span>grid-area: content; </span><span>} </span> <span><span>.sidebar</span> { </span> <span>grid-area: sidebar; </span><span>} </span> <span><span>.sponsors-wrapper</span> { </span> <span>grid-area: sponsors; </span><span>} </span> <span><span>.footer</span> { </span> <span>grid-area: footer; </span><span>} </span>
ログイン後にコピーログイン後にコピーログイン後にコピーログイン後にコピーヘッダーの設計<span><span>.container</span> { </span> <span>display: grid; </span> <span>margin: 0 2rem; </span> <span>grid-template-columns: 2fr 6fr 4fr; </span><span>} </span>
ログイン後にコピーログイン後にコピーログイン後にコピーログイン後にコピーまた、ロゴとメニューは中央に垂直に整列されていることに注意してください。これは、ラインハイイトトリックを使用して達成されています。
ただし、CSSグリッドを使用すると、物事はより簡単になります。CSSハッキングは必要ありません。最初の行を定義することから始めます:
<span><span>.container</span> { </span> // ... <span>grid-gap: 2rem 1rem; </span><span>} </span>
ログイン後にコピーログイン後にコピーログイン後にコピーログイン後にコピーロゴは1つの列のみを占有する必要がありますが、メニューには2つの列に及ぶ必要があります。上記のグリッドエリア名を参照するGrid-Template-Areasプロパティの助けを借りて意図を表明できます。
ここで何が起こっているのですか?まあ、ロゴは一度だけ言うことで、1つだけを占めることを確認しています。メニューメニューは、メニューが2つの列の2つの列を占めることを意味します。中央と右の列です。このルールがどれほど簡単か!<span>* { </span> <span>box-sizing: border-box; </span><span>} </span> <span>html { </span> <span>font-size: 16px; </span> <span>font-family: Georgia, serif; </span><span>} </span> <span>body { </span> <span>background-color: #fbfbfb; </span><span>} </span> <span>h1<span>, h2, h3</span> { </span> <span>margin-top: 0; </span><span>} </span> <span>header h1 { </span> <span>margin: 0; </span><span>} </span> <span>main p { </span> <span>margin-bottom: 0; </span><span>} </span>
ログイン後にコピーログイン後にコピーログイン後にコピーログイン後にコピーをご覧ください
y軸のロゴを並べます:メニューは垂直に中央に置き、右に引っ張る必要があります:<span><span>.main-header</span> { </span> <span>height: 3rem; </span><span>} </span>
ログイン後にコピーログイン後にコピーログイン後にコピーログイン後にコピーメニューはULタグとLIタグで構築されているため、マーカーを削除し、マージン/パディングを無効にし、メニューをフレックスコンテナに設定して、少しスタイルを整えましょう。<span><span>.logo</span> { </span> // ... <span>height: 100%; </span> <span>line-height: 3rem; </span><span>} </span>
ログイン後にコピーログイン後にコピーログイン後にコピーその後、CSSルールタブに進み、ディスプレイ:Gridプロパティを見つけます。グリッド値の横にある小さなアイコンを押すことにより、蛍光ペンを有効または無効にすることができます。<span><span>.container</span> { </span> // ... <span>grid-template-rows: 3rem; </span><span>} </span>
ログイン後にコピーログイン後にコピー<span><span>.container</span> { </span> // ... <span>grid-template-areas: </span> <span>"logo menu menu"; </span><span>} </span>
ログイン後にコピーここに結果があります:
<span><span>.logo</span> { </span> <span>grid-area: logo; </span> <span>align-self: center; </span><span>} </span>
ログイン後にコピー蛍光ペンには、すべての行と列、およびそれらとエリアの名前の間のマージンが表示されます。レイアウトセクション内の出力をカスタマイズできます。これには、ページ上のすべてのグリッドもリストします。
それで、ヘッダーを扱ったので、メインコンテンツ領域とサイドバーに進みましょう。メインコンテンツとサイドバー
メインコンテンツ領域には2つの列に及ぶ必要がありますが、サイドバーは1つだけを占有する必要があります。行に関しては、その高さを自動的に設定したいと思います。それに応じて.containerグリッドを更新できます:
Firefoxのグリッドツールで表示されているように、<span><span><span><div</span> class<span>="container"</span>></span> </span> <span><span><span><header</span> class<span>="logo"</span>></span> </span> <span><span><span><h1</span>></span><span><span><a</span> href<span>="#"</span>></span>DemoSite<span><span></a</span>></span><span><span></h1</span>></span> </span> <span><span><span></header</span>></span> </span> <span><span><span><nav</span> class<span>="main-menu"</span>></span> </span> <span><span><span><ul</span>></span> </span> <span><span><span><li</span> class<span>="main-menu__item"</span>></span><span><span><a</span> href<span>="#"</span>></span>Our clients<span><span></a</span>></span><span><span></li</span>></span> </span> <span><span><span><li</span> class<span>="main-menu__item"</span>></span><span><span><a</span> href<span>="#"</span>></span>Products<span><span></a</span>></span><span><span></li</span>></span> </span> <span><span><span><li</span> class<span>="main-menu__item"</span>></span><span><span><a</span> href<span>="#"</span>></span>Contact<span><span></a</span>></span><span><span></li</span>></span> </span> <span><span><span></ul</span>></span> </span> <span><span><span></nav</span>></span> </span> <span><span><span><main</span> class<span>="content-area"</span>></span> </span> <span><span><span><h2</span>></span>Welcome!<span><span></h2</span>></span> </span> <span><span><span><p</span>></span> </span> Content <span><span><span></p</span>></span> </span> <span><span><span></main</span>></span> </span> <span><span><span><aside</span> class<span>="sidebar"</span>></span> </span> <span><span><span><h3</span>></span>Additional stuff<span><span></h3</span>></span> </span> <span><span><span><ul</span>></span> </span> <span><span><span><li</span>></span>Items<span><span></li</span>></span> </span> <span><span><span><li</span>></span>Are<span><span></li</span>></span> </span> <span><span><span><li</span>></span>Listed<span><span></li</span>></span> </span> <span><span><span><li</span>></span>Here<span><span></li</span>></span> </span> <span><span><span><li</span>></span>Wow!<span><span></li</span>></span> </span> <span><span><span></ul</span>></span> </span> <span><span><span></aside</span>></span> </span> <span><span><span><section</span> class<span>="sponsors-wrapper"</span>></span> </span> <span><span><span><h2</span>></span>Our sponsors<span><span></h2</span>></span> </span> <span><span><span><section</span> class<span>="sponsors"</span>></span> </span> <span><span><span><figure</span> class<span>="sponsor"</span>></span> </span> <span><span><span><img</span> src<span>="https://via.placeholder.com/150x150"</span>></span> </span> <span><span><span></figure</span>></span> </span> <span><span><span><figure</span> class<span>="sponsor"</span>></span> </span> <span><span><span><img</span> src<span>="https://via.placeholder.com/200x150"</span>></span> </span> <span><span><span></figure</span>></span> </span> <span><span><span><figure</span> class<span>="sponsor"</span>></span> </span> <span><span><span><img</span> src<span>="https://via.placeholder.com/100x200"</span>></span> </span> <span><span><span></figure</span>></span> </span> <span><span><span><figure</span> class<span>="sponsor"</span>></span> </span> <span><span><span><img</span> src<span>="https://via.placeholder.com/100x100"</span>></span> </span> <span><span><span></figure</span>></span> </span> <span><span><span><figure</span> class<span>="sponsor"</span>></span> </span> <span><span><span><img</span> src<span>="https://via.placeholder.com/200x200"</span>></span> </span> <span><span><span></figure</span>></span> </span> <span><span><span></section</span>></span> </span> <span><span><span></section</span>></span> </span> <span><span><span><footer</span> class<span>="footer"</span>></span> </span> <span><span><span><p</span>></span> </span> <span title="©">© 2018 DemoSite. White&Sons LLC. All rights (perhaps) reserved. </span> <span><span><span></p</span>></span> </span> <span><span><span></footer</span>></span> </span><span><span><span></div</span>></span> </span>
ログイン後にコピーログイン後にコピーログイン後にコピーログイン後にコピー結果は次のとおりです
<span><span>.logo</span> { </span> <span>grid-area: logo; </span><span>} </span> <span><span>.main-menu</span> { </span> <span>grid-area: menu; </span><span>} </span> <span><span>.content-area</span> { </span> <span>grid-area: content; </span><span>} </span> <span><span>.sidebar</span> { </span> <span>grid-area: sidebar; </span><span>} </span> <span><span>.sponsors-wrapper</span> { </span> <span>grid-area: sponsors; </span><span>} </span> <span><span>.footer</span> { </span> <span>grid-area: footer; </span><span>} </span>
ログイン後にコピーログイン後にコピーログイン後にコピーログイン後にコピースポンサーセクションには、幅と高さが等しい5つのアイテムを含める必要があります。各アイテムには、1つの画像があります
まず、グリッドテンプレートエリアを調整して、スポンサーエリアを含めます。
次に、.sponsorsセクションもグリッドに変えます:
<span><span>.container</span> { </span> <span>display: grid; </span> <span>margin: 0 2rem; </span> <span>grid-template-columns: 2fr 6fr 4fr; </span><span>} </span>
ログイン後にコピーログイン後にコピーログイン後にコピーログイン後にコピー<span><span>.container</span> { </span> // ... <span>grid-gap: 2rem 1rem; </span><span>} </span>
ログイン後にコピーログイン後にコピーログイン後にコピーログイン後にコピー<span>* { </span> <span>box-sizing: border-box; </span><span>} </span> <span>html { </span> <span>font-size: 16px; </span> <span>font-family: Georgia, serif; </span><span>} </span> <span>body { </span> <span>background-color: #fbfbfb; </span><span>} </span> <span>h1<span>, h2, h3</span> { </span> <span>margin-top: 0; </span><span>} </span> <span>header h1 { </span> <span>margin: 0; </span><span>} </span> <span>main p { </span> <span>margin-bottom: 0; </span><span>} </span>
ログイン後にコピーログイン後にコピーログイン後にコピーログイン後にコピー<span><span>.main-header</span> { </span> <span>height: 3rem; </span><span>} </span>
ログイン後にコピーログイン後にコピーログイン後にコピーログイン後にコピーこの例は、問題なくグリッドをネストできることを示しています。別のソリューションはFlexBoxを使用することかもしれませんが、この場合、スポンサーはそれらに十分な幅がない場合にラップする場合があります。
次に、画像を垂直にも水平にも中央に配置したいと思います。次のことを試してみるかもしれません:<span><span>.logo</span> { </span> // ... <span>height: 100%; </span> <span>line-height: 3rem; </span><span>} </span>
ログイン後にコピーログイン後にコピーログイン後にコピー画像は確かに整列されますが、残念ながら白い背景はなくなりました。これは、各.ponsorが画像の寸法に等しい幅と高さを持っているためです。
ここでは別のアプローチが必要であり、可能な解決策の1つはFlexBoxを採用することです。
今、すべてが適切に表示され、グリッドがflexboxでうまく再生されることがわかります:<span><span>.container</span> { </span> // ... <span>grid-template-rows: 3rem; </span><span>} </span>
ログイン後にコピーログイン後にコピーフッター
最後のセクションはフッターで、実際に最も簡単なセクションです。私たちがしなければならないのは、それを3つの列すべてに渡すことだけです:
<span><span><span><div</span> class<span>="container"</span>></span> </span> <span><span><span><header</span> class<span>="logo"</span>></span> </span> <span><span><span><h1</span>></span><span><span><a</span> href<span>="#"</span>></span>DemoSite<span><span></a</span>></span><span><span></h1</span>></span> </span> <span><span><span></header</span>></span> </span> <span><span><span><nav</span> class<span>="main-menu"</span>></span> </span> <span><span><span><ul</span>></span> </span> <span><span><span><li</span> class<span>="main-menu__item"</span>></span><span><span><a</span> href<span>="#"</span>></span>Our clients<span><span></a</span>></span><span><span></li</span>></span> </span> <span><span><span><li</span> class<span>="main-menu__item"</span>></span><span><span><a</span> href<span>="#"</span>></span>Products<span><span></a</span>></span><span><span></li</span>></span> </span> <span><span><span><li</span> class<span>="main-menu__item"</span>></span><span><span><a</span> href<span>="#"</span>></span>Contact<span><span></a</span>></span><span><span></li</span>></span> </span> <span><span><span></ul</span>></span> </span> <span><span><span></nav</span>></span> </span> <span><span><span><main</span> class<span>="content-area"</span>></span> </span> <span><span><span><h2</span>></span>Welcome!<span><span></h2</span>></span> </span> <span><span><span><p</span>></span> </span> Content <span><span><span></p</span>></span> </span> <span><span><span></main</span>></span> </span> <span><span><span><aside</span> class<span>="sidebar"</span>></span> </span> <span><span><span><h3</span>></span>Additional stuff<span><span></h3</span>></span> </span> <span><span><span><ul</span>></span> </span> <span><span><span><li</span>></span>Items<span><span></li</span>></span> </span> <span><span><span><li</span>></span>Are<span><span></li</span>></span> </span> <span><span><span><li</span>></span>Listed<span><span></li</span>></span> </span> <span><span><span><li</span>></span>Here<span><span></li</span>></span> </span> <span><span><span><li</span>></span>Wow!<span><span></li</span>></span> </span> <span><span><span></ul</span>></span> </span> <span><span><span></aside</span>></span> </span> <span><span><span><section</span> class<span>="sponsors-wrapper"</span>></span> </span> <span><span><span><h2</span>></span>Our sponsors<span><span></h2</span>></span> </span> <span><span><span><section</span> class<span>="sponsors"</span>></span> </span> <span><span><span><figure</span> class<span>="sponsor"</span>></span> </span> <span><span><span><img</span> src<span>="https://via.placeholder.com/150x150"</span>></span> </span> <span><span><span></figure</span>></span> </span> <span><span><span><figure</span> class<span>="sponsor"</span>></span> </span> <span><span><span><img</span> src<span>="https://via.placeholder.com/200x150"</span>></span> </span> <span><span><span></figure</span>></span> </span> <span><span><span><figure</span> class<span>="sponsor"</span>></span> </span> <span><span><span><img</span> src<span>="https://via.placeholder.com/100x200"</span>></span> </span> <span><span><span></figure</span>></span> </span> <span><span><span><figure</span> class<span>="sponsor"</span>></span> </span> <span><span><span><img</span> src<span>="https://via.placeholder.com/100x100"</span>></span> </span> <span><span><span></figure</span>></span> </span> <span><span><span><figure</span> class<span>="sponsor"</span>></span> </span> <span><span><span><img</span> src<span>="https://via.placeholder.com/200x200"</span>></span> </span> <span><span><span></figure</span>></span> </span> <span><span><span></section</span>></span> </span> <span><span><span></section</span>></span> </span> <span><span><span><footer</span> class<span>="footer"</span>></span> </span> <span><span><span><p</span>></span> </span> <span title="©">© 2018 DemoSite. White&Sons LLC. All rights (perhaps) reserved. </span> <span><span><span></p</span>></span> </span> <span><span><span></footer</span>></span> </span><span><span><span></div</span>></span> </span>
ログイン後にコピーログイン後にコピーログイン後にコピーログイン後にコピー基本的に、レイアウトは終了します!ただし、まだ完了していません。サイトも応答する必要があります。それでは、次のセクションでこのタスクに注意してみましょう。
レイアウトを応答するCSSグリッドを所定の位置に配置すると、領域をすばやく再配置できるため、実際には応答性を導入するのは非常に簡単です。
大きな画面<span><span>.logo</span> { </span> <span>grid-area: logo; </span><span>} </span> <span><span>.main-menu</span> { </span> <span>grid-area: menu; </span><span>} </span> <span><span>.content-area</span> { </span> <span>grid-area: content; </span><span>} </span> <span><span>.sidebar</span> { </span> <span>grid-area: sidebar; </span><span>} </span> <span><span>.sponsors-wrapper</span> { </span> <span>grid-area: sponsors; </span><span>} </span> <span><span>.footer</span> { </span> <span>grid-area: footer; </span><span>} </span>
ログイン後にコピーログイン後にコピーログイン後にコピーログイン後にコピー中画面では、メインコンテンツ領域とサイドバーを3つすべての列を占有したいと思います。
また、フォントのサイズを減らして、スポンサーが別の下に表示されるように積み重ねてみましょう。列間のギャップはゼロでなければなりません(実際には列が1つしかないため)。代わりに、行の間にギャップを設定します:これは、レイアウトが中程度の画面でどのように見えるかです:<span><span>.container</span> { </span> <span>display: grid; </span> <span>margin: 0 2rem; </span> <span>grid-template-columns: 2fr 6fr 4fr; </span><span>} </span>
ログイン後にコピーログイン後にコピーログイン後にコピーログイン後にコピー<span><span>.container</span> { </span> // ... <span>grid-gap: 2rem 1rem; </span><span>} </span>
ログイン後にコピーログイン後にコピーログイン後にコピーログイン後にコピー小さな画面では、各領域を別の行に表示します。つまり、今は1つの列のみがあります。
<span>* { </span> <span>box-sizing: border-box; </span><span>} </span> <span>html { </span> <span>font-size: 16px; </span> <span>font-family: Georgia, serif; </span><span>} </span> <span>body { </span> <span>background-color: #fbfbfb; </span><span>} </span> <span>h1<span>, h2, h3</span> { </span> <span>margin-top: 0; </span><span>} </span> <span>header h1 { </span> <span>margin: 0; </span><span>} </span> <span>main p { </span> <span>margin-bottom: 0; </span><span>} </span>
ログイン後にコピーログイン後にコピーログイン後にコピーログイン後にコピー<span><span>.main-header</span> { </span> <span>height: 3rem; </span><span>} </span>
ログイン後にコピーログイン後にコピーログイン後にコピーログイン後にコピーメディアクエリなしで行う
メディアクエリなしでスポンサーをブロックすることができることに言及する価値があります。これは、Auto-FitプロパティとMinMax関数の助けを借りて可能です。それらを動作させているのを見るには、このような.ponsorsのスタイルを微調整してください:
自動充填とは、「できるだけ多くの列で行を埋める」ということです。列に十分なスペースがない場合は、次の行に配置されます。<span><span>.logo</span> { </span> // ... <span>height: 100%; </span> <span>line-height: 3rem; </span><span>} </span>
ログイン後にコピーログイン後にコピーログイン後にコピーこれは、小さな画面で列がそれぞれ最大200pxに縮小される可能性があることを意味します。まだ十分なスペースがない場合は、1つまたは複数の列が別のラインに移動されます。上記のCSSルールを適用した結果は次のとおりです
フォールバックもちろん、サイトはまだ使用可能であるため、これは世界の終わりではありませんが、少なくともいくつかのフォールバックルールを追加しましょう。良いニュースは、要素が浮かんでおり、グリッドが割り当てられている場合、グリッドが優先されることです。また、ディスプレイ、垂直アライメント、およびその他のプロパティもグリッドアイテムに影響を与えないため、その事実を利用してみましょう。
を使用してこれを実現できます積み重ねられたメニューは見た目がいいですが、サイドバーはおそらくメインコンテンツの隣に配置する必要があります。 Display:inline-block:
グリッドをサポートするすべてのブラウザでは、これらのプロパティは効果がありませんが、IEでは予想どおりに適用されます。微調整する必要があるもう1つのプロパティは幅です。
しかし、これらのスタイルを追加して、グリッドレイアウトは、グリッドアイテムでは
> <span><span><span><div</span> class<span>="container"</span>></span> </span> <span><span><span><header</span> class<span>="logo"</span>></span> </span> <span><span><span><h1</span>></span><span><span><a</span> href<span>="#"</span>></span>DemoSite<span><span></a</span>></span><span><span></h1</span>></span> </span> <span><span><span></header</span>></span> </span> <span><span><span><nav</span> class<span>="main-menu"</span>></span> </span> <span><span><span><ul</span>></span> </span> <span><span><span><li</span> class<span>="main-menu__item"</span>></span><span><span><a</span> href<span>="#"</span>></span>Our clients<span><span></a</span>></span><span><span></li</span>></span> </span> <span><span><span><li</span> class<span>="main-menu__item"</span>></span><span><span><a</span> href<span>="#"</span>></span>Products<span><span></a</span>></span><span><span></li</span>></span> </span> <span><span><span><li</span> class<span>="main-menu__item"</span>></span><span><span><a</span> href<span>="#"</span>></span>Contact<span><span></a</span>></span><span><span></li</span>></span> </span> <span><span><span></ul</span>></span> </span> <span><span><span></nav</span>></span> </span> <span><span><span><main</span> class<span>="content-area"</span>></span> </span> <span><span><span><h2</span>></span>Welcome!<span><span></h2</span>></span> </span> <span><span><span><p</span>></span> </span> Content <span><span><span></p</span>></span> </span> <span><span><span></main</span>></span> </span> <span><span><span><aside</span> class<span>="sidebar"</span>></span> </span> <span><span><span><h3</span>></span>Additional stuff<span><span></h3</span>></span> </span> <span><span><span><ul</span>></span> </span> <span><span><span><li</span>></span>Items<span><span></li</span>></span> </span> <span><span><span><li</span>></span>Are<span><span></li</span>></span> </span> <span><span><span><li</span>></span>Listed<span><span></li</span>></span> </span> <span><span><span><li</span>></span>Here<span><span></li</span>></span> </span> <span><span><span><li</span>></span>Wow!<span><span></li</span>></span> </span> <span><span><span></ul</span>></span> </span> <span><span><span></aside</span>></span> </span> <span><span><span><section</span> class<span>="sponsors-wrapper"</span>></span> </span> <span><span><span><h2</span>></span>Our sponsors<span><span></h2</span>></span> </span> <span><span><span><section</span> class<span>="sponsors"</span>></span> </span> <span><span><span><figure</span> class<span>="sponsor"</span>></span> </span> <span><span><span><img</span> src<span>="https://via.placeholder.com/150x150"</span>></span> </span> <span><span><span></figure</span>></span> </span> <span><span><span><figure</span> class<span>="sponsor"</span>></span> </span> <span><span><span><img</span> src<span>="https://via.placeholder.com/200x150"</span>></span> </span> <span><span><span></figure</span>></span> </span> <span><span><span><figure</span> class<span>="sponsor"</span>></span> </span> <span><span><span><img</span> src<span>="https://via.placeholder.com/100x200"</span>></span> </span> <span><span><span></figure</span>></span> </span> <span><span><span><figure</span> class<span>="sponsor"</span>></span> </span> <span><span><span><img</span> src<span>="https://via.placeholder.com/100x100"</span>></span> </span> <span><span><span></figure</span>></span> </span> <span><span><span><figure</span> class<span>="sponsor"</span>></span> </span> <span><span><span><img</span> src<span>="https://via.placeholder.com/200x200"</span>></span> </span> <span><span><span></figure</span>></span> </span> <span><span><span></section</span>></span> </span> <span><span><span></section</span>></span> </span> <span><span><span><footer</span> class<span>="footer"</span>></span> </span> <span><span><span><p</span>></span> </span> <span title="©">© 2018 DemoSite. White&Sons LLC. All rights (perhaps) reserved. </span> <span><span><span></p</span>></span> </span> <span><span><span></footer</span>></span> </span><span><span><span></div</span>></span> </span>次に、スポンサーのアイテムの世話をして、各ブロックに最大のマージンを追加しましょう。
グリッドがサポートされているときに最高マージンは必要ありませんので、@supportsクエリ内でそれを無効にします:<span><span>.logo</span> { </span> <span>grid-area: logo; </span><span>} </span> <span><span>.main-menu</span> { </span> <span>grid-area: menu; </span><span>} </span> <span><span>.content-area</span> { </span> <span>grid-area: content; </span><span>} </span> <span><span>.sidebar</span> { </span> <span>grid-area: sidebar; </span><span>} </span> <span><span>.sponsors-wrapper</span> { </span> <span>grid-area: sponsors; </span><span>} </span> <span><span>.footer</span> { </span> <span>grid-area: footer; </span><span>} </span>
ログイン後にコピーログイン後にコピーログイン後にコピーログイン後にコピー最後に、IEの応答性を追加しましょう。メインコンテンツ、サイドバーを伸ばし、各スポンサーを小さな画面で全幅に伸ばします。
グリッドをサポートするブラウザのスポンサーの幅を修正することを忘れないでください:<span><span>.container</span> { </span> <span>display: grid; </span> <span>margin: 0 2rem; </span> <span>grid-template-columns: 2fr 6fr 4fr; </span><span>} </span>
ログイン後にコピーログイン後にコピーログイン後にコピーログイン後にコピー今すぐインターネットエクスプローラーのレイアウトの外観は次のとおりです<span><span>.container</span> { </span> // ... <span>grid-gap: 2rem 1rem; </span><span>} </span>
ログイン後にコピーログイン後にコピーログイン後にコピーログイン後にコピー<span>* { </span> <span>box-sizing: border-box; </span><span>} </span> <span>html { </span> <span>font-size: 16px; </span> <span>font-family: Georgia, serif; </span><span>} </span> <span>body { </span> <span>background-color: #fbfbfb; </span><span>} </span> <span>h1<span>, h2, h3</span> { </span> <span>margin-top: 0; </span><span>} </span> <span>header h1 { </span> <span>margin: 0; </span><span>} </span> <span>main p { </span> <span>margin-bottom: 0; </span><span>} </span>
ログイン後にコピーログイン後にコピーログイン後にコピーログイン後にコピーCodepen:
で最終結果を表示できますCodePenのSitePoint(@SitePoint)によるグリッド付きマルチコラムレイアウトを参照してください。<span><span>.main-header</span> { </span> <span>height: 3rem; </span><span>} </span>
ログイン後にコピーログイン後にコピーログイン後にコピーログイン後にコピー結論
この記事では、CSSグリッドが動作しているのを見て、既存のフロートベースのレイアウトを再設計するためにそれを利用しました。これら2つのソリューションを比較すると、「グリッド」ソリューションのHTMLおよびCSSコードが小さく(もちろん、フォールバックをカウントしない)、よりシンプルで表現力があることがわかります。 Grid-Template-Areasプロパティの助けを借りて、個々の領域がどのようにレイアウトされているかを簡単に理解することができ、それらをすばやく再配置したり、サイズを調整したりできます。それに加えて、ClearFixのようなさまざまなハッキーなトリックに頼る必要はありません。したがって、ご覧のとおり、CSSグリッドはフロートの優れた代替品であり、生産対応です。インターネットエクスプローラーにいくつかのフォールバックルールを提供する必要があるかもしれません(仕様の古いバージョンを実装しています)が、ご覧のとおり、それらはあまり複雑ではなく、一般的には、逆方向の互換性がなくてもサイトはまだ使用できます。すべて。
すでにCSSグリッドを使用してWebサイトを作成しようとしましたか?あなたの印象は何ですか?コメントであなたの考えを共有してください!
CSSグリッドレトロフィット
に関するよくある質問WebデザインにおけるCSSグリッドレトロフィットの重要性は何ですか?
CSSグリッドレトロフィットは、開発者が簡単に複雑なレイアウトを作成できるようにするWebデザインの強力なツールです。これは2次元システムであり、主に1次元システムであるFlexBoxとは異なり、列と行の両方を処理できることを意味します。これにより、さまざまな画面サイズと解像度に適応するレスポンシブなデザインを作成するための汎用性の高いツールになります。また、サイズが不明または動的であっても、コンテナ内のアイテム間でスペースを整列および配布するプロセスを簡素化します。
CSSグリッドレトロフィットは、他のグリッドシステムと比較してどのように比較されますか?レトロフィットは、柔軟性と使いやすさのために、他のグリッドシステムから際立っています。大規模なコーディングや計算を必要とする他のシステムとは異なり、CSSグリッドレトロフィットにより、開発者は最小限のコードで複雑なレイアウトを作成できます。また、要素の配置とアライメントをより強化するため、多くの開発者にとって好ましい選択肢になります。
モバイルレスポンシブデザインにCSSグリッドレトロフィットを使用できますか?モバイルレスポンシブデザインを作成するための優れたツールです。これにより、開発者はメディアクエリを使用して、さまざまな画面サイズのさまざまなグリッドレイアウトを定義できます。これは、デスクトップビュー用の複雑なレイアウトと、同じCSSドキュメント内のすべてのモバイルビュー用のよりシンプルでより合理化されたレイアウトを作成できることを意味します。 >
CSSグリッドレトロフィットは、Chrome、Firefox、Safari、Edgeなどのほとんどの最新のブラウザーと互換性があります。ただし、古いブラウザやバージョンでは期待どおりに機能しない場合があります。複数のブラウザでデザインをテストして、意図したとおりに機能するようにすることをお勧めします。プロジェクトでCSSグリッドレトロフィットの使用を開始するにはどうすればよいですか?
CSSグリッドレトロフィットの使用を開始するには、コンテナ要素をディスプレイ付きグリッドとして定義する必要があります。グリッド。次に、グリッドテンプレートコラムとグリッドテンプレート列を使用して列と行のサイズを定義し、グリッドコラムとグリッドローを使用してその子要素をグリッドに配置できます。他のレイアウトメソッドを使用したグリッドレトロフィット?
はい、CSSグリッドレトロフィットは、より複雑なデザインのためにFlexBoxなどの他のレイアウト方法と組み合わせることができます。これは、部分的に柔軟で部分的に固定されたレイアウトを作成する場合に特に便利です。レトロフィットには、レイアウト管理を容易にするために名前付きグリッド領域を使用し、FRユニットを柔軟なグリッドトラックに使用し、グリッドレイアウトを視覚化およびデバッグするためのブラウザの開発者ツールでグリッドインスペクターを使用することが含まれます。要素?
CSSグリッドレトロフィットにより、要素がオーバーラップできます。これは、一意のレイアウトを作成するための強力なツールになります。 Z-Indexプロパティを使用して、重複する要素の積み重ね順序を制御できます。
垂直レイアウトに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プロパティ自体を取得する方法についてブログを書いています。それはこのようなものです。

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

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

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

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

フレックスレイアウトの紫色のスラッシュ領域に関する質問フレックスレイアウトを使用すると、開発者ツールなどの混乱する現象に遭遇する可能性があります(D ...
