ホームページ >ウェブフロントエンド >CSSチュートリアル >CSSグリッドレイアウトを使用するためにサイトを再設計します
CSSグリッドは、最近のWeb開発の新しいホットなトレンドです。テーブルのレイアウトとフロートを忘れてください:ウェブサイトを設計する新しい方法はすでにここにあります!このテクノロジーは、複数のレイアウト領域を複数のCSSルールで定義する2次元グリッドを導入します。
グリッドは、960Gやブートストラップグリッドなどのサードパーティのフレームワークを作成できます。この機能はすべての主要なブラウザによってサポートされていますが、インターネットエクスプローラーは仕様の古いバージョンを実装しています。 グリッドレイアウトを初めて使用する場合は、CSSグリッドの初心者向けガイドをご覧ください。キーテイクアウト
CSSグリッドレイアウトは、マルチコラムレイアウトの作成を簡素化し、フロートやディスプレイテーブルなどの古いテクニックの必要性を排除します。 CSSグリッドにより、グリッド領域を簡単に再配置およびサイズ変更できるようになり、ブートストラップのような従来のCSSフレームワークと比較して、より柔軟で直感的な設計方法になります。
CSSグリッドの実装では、グリッド、列と行のセットアップ、および単純なCSSルールを使用して指定されたグリッド領域に要素を配置するコンテナを表示します。しかし、CSSは進化し続けており、今ではCSSグリッドがあります。概念的には、古いテーブルレイアウトに似ていますが、より柔軟なレイアウトを備えたセマンティック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>ヘッダーの設計
ヘッダーは、特定の高さを3レムに設定する必要がある最初の行を占有します。最初のレイアウトでは、これはヘッダーラッパーに高さプロパティを割り当てることで解決されます。
最初の行を定義することから始めます:
<span><span>.container</span> { </span> // ... <span>grid-gap: 2rem 1rem; </span><span>} </span>
ロゴは1つの列のみを占有する必要がありますが、メニューには2つの列に及ぶ必要があります。上記のグリッドエリア名を参照するGrid-Template-Areasプロパティの助けを借りて意図を表明できます。
<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>ここで何が起こっているのですか?まあ、ロゴは一度だけ言うことで、1つだけを占めることを確認しています。メニューメニューは、メニューが2つの列の2つの列を占めることを意味します。中央と右の列です。このルールがどれほど簡単か!
をご覧ください
y軸のロゴを並べます:
<span><span>.main-header</span> { </span> <span>height: 3rem; </span><span>} </span>メニューは垂直に中央に置き、右に引っ張る必要があります:
<span><span>.logo</span> { </span> // ... <span>height: 100%; </span> <span>line-height: 3rem; </span><span>} </span>メニューはULタグとLIタグで構築されているため、マーカーを削除し、マージン/パディングを無効にし、メニューをフレックスコンテナに設定して、少しスタイルを整えましょう。
それはほとんどそれです。結果を観察するために、便利なCSSグリッドハイライターツールを有効にしてFirefoxを使用します。 (利用可能な他のブラウザには同様のツールがあります。たとえば、Chrome用のグリッドマン。)このツールにアクセスするには、F12を押して、グリッドラベルが必要な.Container要素を選択します。
<span><span>.container</span> { </span> // ... <span>grid-template-rows: 3rem; </span><span>} </span>その後、CSSルールタブに進み、ディスプレイ:Gridプロパティを見つけます。グリッド値の横にある小さなアイコンを押すことにより、蛍光ペンを有効または無効にすることができます。
<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>
蛍光ペンには、すべての行と列、およびそれらとエリアの名前の間のマージンが表示されます。レイアウトセクション内の出力をカスタマイズできます。これには、ページ上のすべてのグリッドもリストします。
メインコンテンツとサイドバー
サイドバーにパディングを追加して、視覚的なスペースをいくつか提供したいと思います。
<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>Firefoxのグリッドツールで表示されているように、
結果は次のとおりです
<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セクションもグリッドに変えます:
等しい幅の5つのアイテムが必要である限り、繰り返し()関数を使用して列を定義できます。
行に関しては、その高さを自動的に設定する必要があります。列間のギャップは1REMに等しくなければなりません:
<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>
place-selfは、x軸とy軸の要素を調整します。それは自分自身を調整し、自分自身を正当化するための速記の財産です。
画像は確かに整列されますが、残念ながら白い背景はなくなりました。これは、各.ponsorが画像の寸法に等しい幅と高さを持っているためです。
ここでは別のアプローチが必要であり、可能な解決策の1つはFlexBoxを採用することです。
<span><span>.container</span> { </span> // ... <span>grid-template-rows: 3rem; </span><span>} </span>今、すべてが適切に表示され、グリッドがflexboxでうまく再生されることがわかります:
最後のセクションはフッターで、実際に最も簡単なセクションです。私たちがしなければならないのは、それを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>
<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>次に、スポンサーのアイテムの世話をして、各ブロックに最大のマージンを追加しましょう。
<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>グリッドがサポートされているときに最高マージンは必要ありませんので、@supportsクエリ内でそれを無効にします:
最後に、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:
で最終結果を表示できます<span><span>.main-header</span> { </span> <span>height: 3rem; </span><span>} </span>CodePenのSitePoint(@SitePoint)によるグリッド付きマルチコラムレイアウトを参照してください。
したがって、ご覧のとおり、CSSグリッドはフロートの優れた代替品であり、生産対応です。インターネットエクスプローラーにいくつかのフォールバックルールを提供する必要があるかもしれません(仕様の古いバージョンを実装しています)が、ご覧のとおり、それらはあまり複雑ではなく、一般的には、逆方向の互換性がなくてもサイトはまだ使用できます。すべて。
すでにCSSグリッドを使用してWebサイトを作成しようとしましたか?あなたの印象は何ですか?コメントであなたの考えを共有してください!
CSSグリッドレトロフィット
に関するよくある質問CSSグリッドレトロフィットは、他のグリッドシステムと比較してどのように比較されますか?レトロフィットは、柔軟性と使いやすさのために、他のグリッドシステムから際立っています。大規模なコーディングや計算を必要とする他のシステムとは異なり、CSSグリッドレトロフィットにより、開発者は最小限のコードで複雑なレイアウトを作成できます。また、要素の配置とアライメントをより強化するため、多くの開発者にとって好ましい選択肢になります。
CSSグリッドレトロフィットの使用を開始するには、コンテナ要素をディスプレイ付きグリッドとして定義する必要があります。グリッド。次に、グリッドテンプレートコラムとグリッドテンプレート列を使用して列と行のサイズを定義し、グリッドコラムとグリッドローを使用してその子要素をグリッドに配置できます。他のレイアウトメソッドを使用したグリッドレトロフィット?
CSSグリッドレトロフィットにより、要素がオーバーラップできます。これは、一意のレイアウトを作成するための強力なツールになります。 Z-Indexプロパティを使用して、重複する要素の積み重ね順序を制御できます。
以上がCSSグリッドレイアウトを使用するためにサイトを再設計しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。