簡単で応答性の高い最新のCSSグリッドレイアウト
コアポイント
- CSSグリッドは、HTMLではなくCSSでグリッド構造を作成できる強力なレイアウトシステムです。ほとんどの最新のブラウザは、古いバージョンをサポートするIE11を除き、それをサポートしています。
- この記事では、応答性の高い最新のCSSグリッドレイアウトを作成し、徐々にCSSグリッドを追加し、古いブラウザーにフォールバックコードを提供する方法を示しています。これには、中心要素へのテクノロジー、スパンプロジェクト、および小型機器のレイアウトを調整することが含まれます。
- CSSグリッドは、グリッドアイテムを見つけるために
grid-column
やgrid-row
などのユーティリティを提供し、justify-items
、align-items
、align-self
などのプロパティを配置して調整および調整します。また、グリッドチャイルドエレメント自体がグリッドコンテナになる可能性のあるネストされたグリッドも許可します。 - 小さな画面デバイスの場合、レイアウト構造を簡単に変更してCSSグリッドで線形化し、グリッド領域を再定義し、メディアクエリを使用できます。これにより、小さな画面でより便利なレイアウトになります。
この記事では、応答性の高い最新のCSSグリッドレイアウトを作成する方法、古いブラウザにフォールバックコードを使用する方法、CSSグリッドをステップバイステップで追加する方法、および小型デバイスのレイアウトを再構築し、Alignment属性センターリングを使用する方法を示します。要素。
以前の記事では、応答性の高いグリッドレイアウトを簡単に構築するための4つの異なる手法を調査しました。この投稿は2014年にCSSグリッドが利用可能になる前に書かれたため、このチュートリアルでは、同様のHTML構造を使用しますが、最新のCSSグリッドレイアウトを使用します。
このチュートリアルでは、Floatを使用して基本的なレイアウトを備えたデモを作成し、CSSグリッドで強化します。センターリング要素、プロジェクトにまたがる、グリッド領域を再定義してメディアクエリを使用することにより、小さなデバイスのレイアウトを簡単に変更するなど、多くの有用なユーティリティを実証します。このCodepen:レスポンシブモダンなCSSグリッドレイアウト
応答性の高いグリッドデモンストレーションを作成する前に、最初にCSSグリッドを紹介しましょう。CSSグリッドは、2017年にほとんどの最新のブラウザに追加された強力な2次元システムです。 HTMLレイアウトの作成方法を完全に変更します。グリッドレイアウトにより、HTMLではなくCSSでグリッド構造を作成できます。
IE11に加えて、ほとんどの最新のブラウザはCSSグリッドをサポートしています。 Caniuse.comを使用してサポートを確認できます。
グリッドレイアウトには、
プロパティがdisplay
またはgrid
に設定されている親コンテナがあります。コンテナの子要素はグリッドアイテムであり、強力なグリッドアルゴリズムのために暗黙的に配置されます。また、さまざまなクラスを適用して、プロジェクトの配置、サイズ、位置、その他の側面を制御することもできます。 inline-grid
基本的なHTMLページから始めましょう。 HTMLファイルを作成し、以下を追加します
<!DOCTYPE html> <html> <head> <title>CSS Grid Layout Example</title> <link rel="stylesheet" href="style.css"> </head> <body> <header> <h2 id="CSS-Grid-Layout-Example">CSS Grid Layout Example</h2> </header> <aside class="sidebar"> <p>Sidebar</p> </aside> <main> <article>1</article> <article>2</article> <article>11</article> </main> <footer> <p>Copyright 2018</p> </footer> </body> </html>
タグを使用します。 <article>
は、独立した自己完結型コンテンツをラップするために使用できるHTML5セマンティックタグです。単一のページには、任意の数の<article>
タグを含めることができます。 <article>
タグを追加し、次のスタイルを追加します。
<style>
body { background: #12458c; margin: 0rem; padding: 0px; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif; } header { text-transform: uppercase; padding-top: 1px; padding-bottom: 1px; color: #fff; border-style: solid; border-width: 2px; } aside { color: #fff; border-width:2px; border-style: solid; float: left; width: 6.3rem; } footer { color: #fff; border-width:2px; border-style: solid; clear: both; } main { float: right; width: calc(100% - 7.2rem); padding: 5px; background: hsl(240, 100%, 50%); } main > article { background: hsl(240, 100%, 50%); background-image: url('https://source.unsplash.com/daily'); color: hsl(240, 0%, 100%); border-width: 5px; }
フロートを使用してサイドバーを左に配置し、本体を右に配置し、サイドバーの幅を固定
6.3REM幅に設定します。次に、CSS 関数を使用して、身体部分の残りの幅を計算して設定します。主な部分には、垂直ブロックに編成されたプロジェクトのライブラリが含まれています。
calc()
レイアウトは完璧ではありません。たとえば、サイドバーの高さは、メインコンテンツ部分の高さとは異なります。これらの問題を解決できるさまざまなCSS技術がありますが、ほとんどはヒントまたは回避策です。このレイアウトはグリッドのフォールバックであるため、ユーザーが少なくなります。フォールバックは利用可能で、十分です。
Chrome、Firefox、Edge、Opera、およびSafariの最新バージョンはすべてCSSグリッドをサポートします。つまり、訪問者がこれらのブラウザを使用している場合、フォールバックを提供することを心配する必要はありません。また、Evergreenブラウザを検討する必要があります。 Chrome、Firefox、Edge、Safariの最新バージョンは、常緑ブラウザーです。つまり、ユーザーに促すことなく、自動的かつ静かに自分自身を更新します。すべてのブラウザでレイアウトが適切に機能するようにするために、フローティングベースのデフォルトのフォールバックから始めて、プログレッシブエンハンスメントテクニックを使用して最新のグリッドレイアウトを適用できます。古いブラウザを使用するユーザーは同じエクスペリエンスを得ることはありませんが、それで十分です。
プログレッシブエンハンスメント:すべてをカバーする必要はありませんフォールバックレイアウトの上にCSSグリッドレイアウトを追加する場合、すべてのタグを上書きしたり、完全に個別のCSSスタイルを使用する必要はありません。
- CSSグリッドをサポートしていないブラウザでは、追加するグリッドプロパティは単純に無視されます。
- フロートを使用して要素をレイアウトする場合、グリッドアイテムがフロートよりも優先されることを忘れないでください。つまり、グリッド要素(
float: left|right
スタイルで親要素の子)でもある要素にdisplay: grid
スタイルを追加すると、フロートは無視され、グリッドが撮影されます。 @supports
ルールを使用して、CSSの特定の機能のサポートを確認できます。これにより、必要に応じてフォールバックスタイルをオーバーライドすることができますが、古いブラウザは@supports
ブロックを無視します。
さあ、ページにCSSグリッドを追加しましょう。まず、グリッドコンテナとして<body>
をマークし、グリッド列、行、領域を設定しましょう。
<!DOCTYPE html> <html> <head> <title>CSS Grid Layout Example</title> <link rel="stylesheet" href="style.css"> </head> <body> <header> <h2 id="CSS-Grid-Layout-Example">CSS Grid Layout Example</h2> </header> <aside class="sidebar"> <p>Sidebar</p> </aside> <main> <article>1</article> <article>2</article> <article>11</article> </main> <footer> <p>Copyright 2018</p> </footer> </body> </html>
プロパティを使用して、グリッドコンテナとしてdisplay:grid
をマークします。 0.1VWのグリッドギャップを設定します。ギャップにより、マージンを使用する代わりに、グリッドセル間にスロットを作成できます。また、<body>
を使用して2つの列を追加します。最初の列は6.5 REMの固定幅を採用し、2番目の列は残差幅を採用します。 grid-template-columns
は分数単位であり、1FRは利用可能なスペースの一部に等しくなります。 fr
を使用します。 1列目は6レムの固定高さを使用し、3列目は3レムの固定高さを使用し、残りの自由空間(1FR)は2列目に割り当てられます。 grid-template-rows
を使用して、列の交差点と領域への行によって生成された仮想セルを割り当てます。これで、grid-template-areas
を使用して、エリアテンプレートで指定された領域を実際に定義する必要があります。
grid-area
body { background: #12458c; margin: 0rem; padding: 0px; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif; } header { text-transform: uppercase; padding-top: 1px; padding-bottom: 1px; color: #fff; border-style: solid; border-width: 2px; } aside { color: #fff; border-width:2px; border-style: solid; float: left; width: 6.3rem; } footer { color: #fff; border-width:2px; border-style: solid; clear: both; } main { float: right; width: calc(100% - 7.2rem); padding: 5px; background: hsl(240, 100%, 50%); } main > article { background: hsl(240, 100%, 50%); background-image: url('https://source.unsplash.com/daily'); color: hsl(240, 0%, 100%); border-width: 5px; }
は、サイドバーの幅とマージン/充填スペースを差し引いた後、体の部分の残りの幅を計算します。 width: calc(100% - 7.2rem);
この問題を解決するために、グリッドをサポートするときに
width: auto;
body { /*...*/ display: grid; grid-gap: 0.1vw; grid-template-columns: 6.5rem 1fr; grid-template-rows: 6rem 1fr 3rem; grid-template-areas: "header header" "sidebar content" "footer footer"; }
ネストされたメッシュを追加します
グリッドチャイルドエレメント自体は、グリッドコンテナにすることができます。メインパーツをグリッドコンテナとして設定しましょう:
<!DOCTYPE html> <html> <head> <title>CSS Grid Layout Example</title> <link rel="stylesheet" href="style.css"> </head> <body> <header> <h2 id="CSS-Grid-Layout-Example">CSS Grid Layout Example</h2> </header> <aside class="sidebar"> <p>Sidebar</p> </aside> <main> <article>1</article> <article>2</article> <article>11</article> </main> <footer> <p>Copyright 2018</p> </footer> </body> </html>
0.1VWのグリッドギャップを使用し、repeat(auto-fill, minmax(12rem, 1fr));
関数を使用して列と行を定義します。 auto-fill
オプションは、できるだけ多くの列または行で空きスペースを埋めようとし、必要に応じて暗黙の列または行を作成します。利用可能な列または行を使用可能なスペースに入れたい場合は、auto-fit
を使用する必要があります。 auto-fill
とauto-fit
の違いについて良い説明を読んでください。
これは、結果のスクリーンショットです:
gridgrid-column
、grid-row
、span
キーワード
CSSグリッドは、grid-column
およびgrid-row
を提供します。これにより、グリッドラインを使用して親グリッド内のグリッドアイテムを見つけることができます。これらは、次の特性の略語です
- :グリッド行のグリッドアイテムの開始位置を指定
grid-row-start
- :グリッド行のグリッドアイテムのエンド位置を指定
grid-row-end
- :グリッド列のグリッドアイテムの開始位置を指定
grid-column-start
- :グリッド列のグリッドアイテムのエンド位置を指定
grid-column-end
キーワードを使用して、スパンする列または行の数を指定することもできます。 span
これは結果のスクリーンショットです:
body { background: #12458c; margin: 0rem; padding: 0px; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif; } header { text-transform: uppercase; padding-top: 1px; padding-bottom: 1px; color: #fff; border-style: solid; border-width: 2px; } aside { color: #fff; border-width:2px; border-style: solid; float: left; width: 6.3rem; } footer { color: #fff; border-width:2px; border-style: solid; clear: both; } main { float: right; width: calc(100% - 7.2rem); padding: 5px; background: hsl(240, 100%, 50%); } main > article { background: hsl(240, 100%, 50%); background-image: url('https://source.unsplash.com/daily'); color: hsl(240, 0%, 100%); border-width: 5px; }
グリッドアライメントユーティリティを使用して
要素の数字にテキストを集中させたいと思います。
CSSグリッドは、グリッドアイテムの整列と調整に使用できる6つのプロパティを提供します<article>
、
、justify-items
、align-items
、justify-content
、align-content
、justify-self
、align-self
を提供します。 。実際、それらはCSSボックスアライメントモジュールの一部です。
header
、aside
、article
、footer
のセレクターで以下を追加します:
body { /*...*/ display: grid; grid-gap: 0.1vw; grid-template-columns: 6.5rem 1fr; grid-template-rows: 6rem 1fr 3rem; grid-template-areas: "header header" "sidebar content" "footer footer"; }
justify-items
行軸または水平方向に沿ってグリッドアイテムを調整するために使用されます。align-items
列軸または垂直方向に沿ってグリッド項目を調整します。それらはすべて、start
、end
、center
、およびstretch
値を取ることができます。
これは、センタリング要素の後のスクリーンショットです:
小さなデバイスでグリッドレイアウトを再構築します
デモレイアウトは中程度および大規模なスクリーンに便利ですが、小さな画面デバイス用のページを構築するための最良の方法ではない場合があります。 CSSグリッドを使用すると、このレイアウト構造を簡単に変更して、グリッド領域を再定義してメディアクエリを使用することにより、小さなデバイスで線形化できます。
ここにコードを追加する前のスクリーンショットがあります。小さなデバイスのレイアウトを再構築します。
575ピクセル未満の幅があるデバイスでは、レイアウトが線形になります。
<!DOCTYPE html> <html> <head> <title>CSS Grid Layout Example</title> <link rel="stylesheet" href="style.css"> </head> <body> <header> <h2 id="CSS-Grid-Layout-Example">CSS Grid Layout Example</h2> </header> <aside class="sidebar"> <p>Sidebar</p> </aside> <main> <article>1</article> <article>2</article> <article>11</article> </main> <footer> <p>Copyright 2018</p> </footer> </body> </html>
サイドバーの幅は使用可能な幅を埋めないことに注意してください。これはフォールバックコードによって引き起こされるため、グリッド対応のブラウザでオーバーライド
width: auto;
これは、最終結果のスクリーンショットです:width: 6.3rem;
body { background: #12458c; margin: 0rem; padding: 0px; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif; } header { text-transform: uppercase; padding-top: 1px; padding-bottom: 1px; color: #fff; border-style: solid; border-width: 2px; } aside { color: #fff; border-width:2px; border-style: solid; float: left; width: 6.3rem; } footer { color: #fff; border-width:2px; border-style: solid; clear: both; } main { float: right; width: calc(100% - 7.2rem); padding: 5px; background: hsl(240, 100%, 50%); } main > article { background: hsl(240, 100%, 50%); background-image: url('https://source.unsplash.com/daily'); color: hsl(240, 0%, 100%); border-width: 5px; }
この記事の冒頭に表示されているCodepenに最終コードを見つけるか、Codepen:
Codepenリンク
簡単で応答性の高い最新のCSSグリッドレイアウトについてのfaq
CSSグリッドとFlexBoxの違いは何ですか?
CSSグリッドとフレックスボックスはどちらもCSSの強力なレイアウトシステムです。場合によっては交換可能に使用できますが、それぞれに独自の利点があります。 FlexBoxは、列または行に沿ってアイテムを割り当てるのに特に適した1次元レイアウトモデルです。一方、CSSグリッドは、列と列の要素を同時に配置するのに理想的な2次元レイアウトシステムです。複雑なWebレイアウトを作成するのに最適です。
CSSグリッドレイアウトを応答する方法は?CSSグリッドにより、メディアクエリなしでレスポンシブレイアウトを簡単に作成できます。グリッドコンテナ内の使用可能なスペースの一部を表す
ユニットを使用できます。たとえば、3つの列のモノスペースが必要な場合は、
を使用できます。列は、画面に合うように自動的にサイズ変更されます。CSSグリッドとフレックスボックスを一緒に使用できますか?
fr
はい、CSSグリッドとフレックスボックスをレイアウトに一緒に使用できます。 CSSグリッドを使用して全体のページレイアウトを作成し、FlexBoxを使用して個々のコンポーネントまたはグリッドセル内のパーツをレイアウトできます。この組み合わせにより、レイアウトを高度に柔軟に制御できます。 grid-template-columns: 1fr 1fr 1fr
CSSグリッドにアイテムを揃える方法は?
cssグリッドは、justify-items
、align-items
、justify-self
、align-self
などのアイテムを調整するためのいくつかのプロパティを提供します。これらのプロパティを使用して、行軸(align)または列軸(align)に沿ってアイテムを並べることができます。たとえば、justify-items: center
は、線軸に沿ってアイテムを中央に配置します。
グリッドプロジェクト間でギャップを作成する方法は?
grid-gap
プロパティを使用して、グリッドアイテム間にギャップを作成できます。このプロパティは、grid-row-gap
およびgrid-column-gap
の略語です。たとえば、grid-gap: 20px
は、すべてのグリッドアイテムの間に20pxギャップを作成します。
auto-fill
およびauto-fit
キーワードはどのように機能しますか?
auto-fill
およびauto-fit
キーワードは、grid-template-columns
プロパティとgrid-template-rows
プロパティの関数で使用されます。 repeat()
できるだけ多くのアイテムを使用して行または列を埋め、アイテムが不十分な場合は空のセルを作成します。 auto-fill
同様に動作しますが、空のセルを崩壊させ、アイテムを伸ばして行または列を埋めます。 auto-fit
CSSグリッドでは、同じグリッドセルにアイテムを配置するか、複数のセルに及ぶアイテムをオーバーラップできます。
属性を使用して、オーバーラップアイテムのスタッキング順序を制御できます。 z-index
CSSグリッドは、Chrome、Firefox、Safari、Edgeなどのすべての最新のブラウザーによってサポートされています。ただし、Internet Explorerはそれをサポートしていません。 Internet Explorerをサポートする必要がある場合は、フォールバックレイアウトを使用する必要がある場合があります。
CSSグリッドでネストされたグリッドを作成する方法は?
メッシュアイテム自体をメッシュコンテナとして設定することにより、ネストされたメッシュを作成できます。グリッドプロジェクトに
を適用し、グリッドコンテナのようにグリッドレイアウトを定義してください。 display: grid
プロパティとgrid-template-rows
プロパティを使用して、グリッドトラック(行と列)のサイズを制御できます。ピクセル(PX)、パーセンテージ(%)、分数(FR)などのさまざまなユニットを使用してサイズを指定できます。 grid-template-columns
以上が簡単で応答性の高い最新の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チームにそれを成し遂げてくれておめでとうございます。それは大規模な努力であり、長い時間がかかったことを知っています。すべての新しいドキュメントも同様です。

最近のビットコインの価格が20k $ $ USDを超えており、最近30Kを破ったので、イーサリアムを作成するために深く掘り下げる価値があると思いました

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

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

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

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

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