⊗mkSpRsTl 126 of 128 menu

CSSで余白のないレスポンシブグリッドレイアウト

画面の幅に応じて1行のブロック数が変わるグリッドレイアウトを作ってみましょう。以下は完成例です:

まずHTMLコードを書きましょう:

<div class="parent"> <div class="child">1</div> <div class="child">2</div> <div class="child">3</div> <div class="child">4</div> <div class="child">5</div> <div class="child">6</div> <div class="child">7</div> <div class="child">8</div> <div class="child">9</div> <div class="child">10</div> <div class="child">11</div> <div class="child">12</div> </div>

次に、親要素にスタイルを追加します:

.parent { display: flex; flex-wrap: wrap; width: 95%; margin: 50px auto; }

次に、幅を設定せずにブロック自体にスタイルを設定します:

.child { box-sizing: border-box; height: 100px; padding: 20px; border: 1px solid green; }

ブロックの幅はパーセント単位で設定する必要があります。これにより、画面サイズが変更されてもブロックの幅がスムーズに変化します。また、特定の画面幅では、1行に収まるブロック数を変えるために、ブロックの幅を変更する必要があります。

1行に4ブロック配置するコードを書いてみましょう:

@media (min-width: 1000px) { .child { width: 25%; } }

次に1行に3ブロック配置します:

@media (min-width: 700px) and (max-width: 1000px) { .child { width: 33.3333%; } }

次に1行に2ブロック配置します:

@media (min-width: 400px) and (max-width: 700px) { .child { width: 50%; } }

1行に1ブロック配置します:

@media (max-width: 400px) { .child { width: 100%; } }

すべてのコードをまとめてみましょう:

.parent { display: flex; flex-wrap: wrap; width: 95%; margin: 50px auto; } .child { box-sizing: border-box; height: 100px; padding: 20px; border: 1px solid green; } @media (max-width: 400px) { .child { width: 100%; } } @media (min-width: 400px) and (max-width: 700px) { .child { width: 50%; } } @media (min-width: 700px) and (max-width: 1000px) { .child { width: 33.3333%; } } @media (min-width: 1000px) { .child { width: 25%; } }

私のコードを、ブロックの幅が calc 関数を使って計算されるように修正してください。

画面幅が小さくなるにつれて、最初は1行に4要素、次に2要素、そして1要素となるグリッドレイアウトを作成してください。

画面幅が小さくなるにつれて、最初は1行に6要素、次に3要素、そして1要素となるグリッドレイアウトを作成してください。

日本語
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItalianoქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
当サイトでは、サイトの動作、分析、パーソナライゼーションのためにクッキーを使用しています。 データ処理はプライバシーポリシーに従って行われます。
すべて受け入れる 設定 拒否