CSS グリッドレイアウトで列にアイテムを埋め込む方法

CSS グリッドレイアウトで列にアイテムを埋め込む方法

n 個のアイテムがあり、これらのアイテムをグリッド レイアウトの列に並べ替える必要があるとします。列の数は固定されており、グリッドを効率的に埋めるためには、グリッド レイアウトの行数が最小限であることも確認する必要があります。この記事では数字を項目として扱います。そして、要件に応じて、グリッド レイアウトに 1 ~ 13 の数字を配置します。列数は3に固定されています。 React と SCSS (Sassy CSS) を使用してこれをデモンストレーションします。

1. 列に並べる場合は、非常に簡単になります。 CSS を使用できます。コードは次のとおりです。

CSS 部分を含む完全なコードは次のとおりです。

出力効果

ご覧のとおり、数字は行に並んでいます。ここでは、グリッド項目が水平に流れ、必要に応じて新しい行が自動的に作成されます。グリッド項目のフローが列の末尾に達すると、新しい行が作成されます。これは、前の行が完全に埋められた場合にのみ次の行が開始されるため、行優先順序とも呼ばれます。

しかし、私たちの要件はアイテムを列に配置することなので、アイテムを列に配置するには、グリッド レイアウトの行数を知る必要があります。行数を知る必要がある理由を説明できます。行ごとの配置では、前の行が完全に埋められたとき(つまり、前の行の項目数が列の数と等しくなったとき)にのみ次の行が開始されます。

同様に、列ごとの配置では、前の列が完全に埋められたとき(つまり、前の列の項目数が行数と等しくなったとき)にのみ、新しい列が始まります。したがって、行がいくつあるかを知る必要があります。では、グリッド レイアウトで作成する行の数をどうやって知ることができるかという疑問が生じます。これは基本的な数学を通じて学ぶことができます...これで、グリッド項目の数と列の数もわかりました。したがって、行数を最小限に抑えるには、この式 Math.ceil(itemsCount/columnsCount) を使用できます。なぜ行数を最小限にする必要があるのでしょうか。行数として大きなランダムな整数を使用すると、グリッドが効果的に埋められず、レイアウト全体の一部のグリッドが埋められなくなるためです。次の CSS コードは列に配置されており、grid-template-rows フィールドを動的に設定する必要があるため、次のコードにはフィールドが存在しません。

CSS 部分を含む完全なコードは次のとおりです。

16 行目で行数が計算されていることがわかります。 17 行目では、grid-template-rows フィールドが動的に設定されます。

ここでは、数字が固定数の列 (3) で列に配置されていることがわかります。ここでも、最小化された行数は 5 です。 5行未満の場合は配置できません。行数が 5 を超えると、レイアウト内に埋められていない空きスペースが残ります。前の列が完全に埋められた場合にのみ、次の列が始まります。

結論

グリッド レイアウトに作成される行の数を計算し、それを動的に設定するというこのトリックにより、問題は非常に簡単に解決されます。列に配置する行数を知る必要があるため、この問題を解決するには、アイテムを配置するときに行数と列数の両方を知る必要があると言えます。注: レイアウトの幅 (列数ではない) が固定されている場合は、同じタイプのソリューションを使用できます。

CSS グリッドレイアウトで列にアイテムを埋める方法についての記事はこれで終わりです。CSS グリッドレイアウトでアイテムを埋める方法の詳細については、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

<<:  Vue シンプル登録ページ + 確認コード送信機能の実装例

>>:  HTML ウェブページのブラウザタイトルバーに小さなアイコンを表示する方法

推薦する

elasticsearchを使用してインデックスデータを定期的に削除する

1. ESを使うこともあるリソースが限られている、またはビジネス上のニーズにより、最新の期間のデータ...

MySQLで行または列をソートする方法

方法:説明: どちらも達成できません:方法1: sp_product から sp.productid...

Vue プロジェクトのパッケージ化と最適化の実装手順

目次Vueプロジェクトのパッケージ化、起動、最適化Vueプロジェクトのパッケージ化プロジェクトホステ...

フラッシュプラグインを使用してPCのカメラを呼び出し、TMLページに埋め込む方法

序文この記事を書いた主な理由は、チームリーダーが、ブラウザを使用してコンピューターのカメラを呼び出し...

MySQLカスケードレプリケーションの実装方法の例

いわゆるカスケード レプリケーションでは、マスター サーバーが 1 つのスレーブ サーバーにのみデー...

MySQL マスタースレーブレプリケーションスレッドの状態遷移に関する詳細な理解

序文MySQL マスター スレーブ レプリケーションの基本原理は、スレーブ データベースがマスター ...

MySQL ロール関数の紹介

目次序文: 1. 役割の紹介2. 役割に関連する操作要約:序文:前回の記事では、MySQLの権限管理...

コンテンツ領域の周囲を回転する CSS 動的グラデーション ボーダーの効果 (サンプル コード)

レンダリング ネットで関連情報を調べたところ、現在のダイナミックグラデーションボーダーの実装方法のほ...

MySQLのインストール時に発生する可能性のある問題

質問1:インストール中に net start mysql と入力すると、次のエラー メッセージが表示...

Linux でジャンプ サーバー経由でリモート サーバーに接続し、ファイルを転送する方法

最近、Linux ホストに環境を展開する際に多くの問題に遭遇しました。最初の問題は、ジャンプ サーバ...

MySQL InnoDB MRR 最適化ガイド

序文MRR は Multi-Range Read の略で、ランダム ディスク アクセスを削減し、ラン...

Nginx 構成の実装 HTTPS セキュリティ認証

1. HttpとHttpsの違いHTTP: インターネットで最も広く使用されているネットワーク プロ...

EXPLAIN コマンドの詳細な説明と MySQL での使用方法

1. シナリオの説明: 同僚から MySQL で explain を使用する方法を教わったので、返さ...

vue3 watch と watchEffect の使い方と違い

1.リスナーを見る時計のご紹介 'vue' から { ref, reactive, ...

MySQLパーティションテーブルは月別に分類されています

目次テーブルを作成するデータベース ファイルを表示します。入れるクエリ消去補足:Mysqlは月テーブ...