この記事では、CSS を使用して 9 マスのグリッド レイアウトを実装するいくつかの方法と、nth-of-type と nth-child の違いを紹介します。
#ここ数日、「9マス方眼レイアウト」というページでよく質問を目にしました。 9マスグリッドレイアウトを実装する方法をいくつか試してみたところ、css
の知識がかなり必要だったので記録しておきます。
この記事はとても良い記事だと思います、マスターのボーダー9マスの書き方を参考にしてみてください! # 九公歌を過小評価しないでください。質問 1 つで候補者の本性が明らかになる可能性があります。
次の実装方法はすべて適応可能です
基本的なレイアウトとスタイル
<div class="box"> <ul> <li>1</li> <li>2</li> <li>3</li> <li>4</li> <li>5</li> <li>6</li> <li>7</li> <li>8</li> <li>9</li> </ul> </div>
.box { background: #e4f7fd61; border: 2px solid #0786ada1; border-radius: 8px; } ul { padding: 0; margin: 0; } .box li { list-style: none; text-align: center; line-height: 200px; background: skyblue; border-radius: 8px; font-size: 20px; color: black; }
実装 1: flex
flex
を使用する際に注意すべき点が 1 つあります。レイアウトの実装では、flex-wrap
属性を使用してラップする必要があります。
.box { width: 100%; overflow: hidden; } ul { width: 100%; height: 100%; display: flex; flex-wrap: wrap; } .box li { width: 30%; height: 30%; margin-right: 5%; margin-bottom: 5%; } .box li:nth-of-type(3n) { margin-right: 0; } .box li:nth-of-type(n+7) { margin-bottom: 0; }
実装 2: float
float
を使用して実装するには 1 つの点に注意する必要があります。フローティングするとフローティングの崩壊が発生します。したがって、overflow: hidden;
を設定し、box
を BFC に設定して、フローティング折りたたみを解決できます。
.box { width: 100%; overflow: hidden; } ul { width: 100%; height: 100%; } .box li { width: 30%; height: 30%; margin-right: 5%; margin-bottom: 5%; float: left; } .box li:nth-of-type(3n) { margin-right: 0; } .box li:nth-of-type(n+7) { margin-bottom: 0; }
実装 3: グリッド
##
<div class="grid"> <div>1</div> <div>2</div> <div>3</div> <div>4</div> <div>5</div> <div>6</div> <div>7</div> <div>8</div> <div>9</div> </div>
box { background: #e4f7fd61; border: 2px solid #0786ada1; border-radius: 8px; } .grid { display: grid; width: 100%; grid-template-rows: repeat(3, 1fr); grid-template-columns: repeat(3, 1fr); grid-gap: 5%; grid-auto-flow: row; } .grid>div { list-style: none; text-align: center; line-height: 200px; background: skyblue; border-radius: 8px; font-size: 20px; color: black; }
実装 4: テーブル
テーブルの使用にはいくつかの問題があります。table セル間の間隔は、
border-spacing 属性を使用して実現されますが、
パーセント形式 をサポートしており、セルの周囲に margin と同様のマージン効果があります。
<div class="box"> <ul> <li> <div>1</div> <div>2</div> <div>3</div> </li> <li> <div>4</div> <div>5</div> <div>6</div> </li> <li> <div>7</div> <div>8</div> <div>9</div> </li> </ul> </div>
.box { width: 100%; overflow: hidden; } ul { width: 100%; height: 100%; display: table; border-spacing: 10px; } .box li { display: table-row; } .box li div { display: table-cell; text-align: center; border-radius: 10px; }
nth-of- type この属性は、最後の列の
margin-right: 0 と最後の行の
margin-bottom: 0 を実装するために使用されます。そこで、
css にも
nth-child 属性があることを思い出したので、両者の違いを記録しておきます。
n 番目のタイプ
MDN::n 番目のタイプ(n) この疑似クラスは、兄弟ノードのグループを持つ
タグ 用です。兄弟ノードのグループの位置をフィルタリングするには、n を使用します。
nth-of-type は、その型の n 番目の兄弟要素であるため、現在の要素 なので、p:nth-of-type(4) は 4 番目の
p 要素です。つまり、どの要素が中央に追加されても、現在のタグ要素のみ の n 番目の要素が選択されます。
n 番目の子
MDN::n 番目の子 (b) this疑似クラスは、まず現在の要素のすべての兄弟要素を検索し、1 から始まる位置順に並べ替えます。選択の結果は、n 番目の子括弧内の式 (an b) と一致する要素のセットです。 CSS 疑似クラス (n=0、1、2、3...) の
nth-child は、現在の要素の兄弟要素の n 番目の現在の要素です。すべての兄弟要素がソートされた後の n 番目の
現在のタグ要素 。
nth-child は、すべての兄弟要素を並べ替えた後の n 番目の子です。現在の要素 現在のタグ要素 であるため、p:nth-child(4) は 4 番目にランク付けされます。
p ビットの要素。下図のように、4 番目が他のタグ要素の場合は取得できません。コメントエリア コミュニケーションをとって一緒に進歩しましょう!
css ビデオ チュートリアル)
以上がCSS を使用して 9 マスのグリッド レイアウトを実現するいくつかの方法について説明しましょう。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。