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 ウェブページのブラウザタイトルバーに小さなアイコンを表示する方法

推薦する

Windows 7 で MySQL 8.0.16 をインストールして使用する場合、パスワードの変更と Navicat への接続に関する問題が発生する

MySQL のインストール時にいくつかの問題が発生しました。オンラインで見つけた回答は似たようなもの...

vue の v-for ディレクティブはリストのレンダリングを完了します

目次1. リストの走査2. Vueにおけるキーの役割3. リストフィルタリングこの記事では、Vue ...

Dockerはnextcloudを使用してプライベートBaiduクラウドディスクを構築します

突然、ドキュメントの保存と共同作業のためのプライベート サービスを構築する必要がありました。多くの場...

MYSQLデータベースの最適化段階を簡単に理解する

導入面接官がこんな質問をしたことはありませんか?データベースをどのように最適化しますか?では、この質...

CSS3で作られたレインボーボタンスタイル

結果: 実装コード: html <div class="buttons"&...

vue+tsは要素のマウスドラッグの効果を実現します

この記事の例では、要素のマウスドラッグ効果を実現するためのvue+tsの具体的なコードを参考までに共...

CSS で画像アダプティブ コンテナを実装するためのサンプル コード

多くの場合、画像をコンテナのサイズに合わせて調整する必要があります。 1. imgタグ方式幅と高さを...

MySQL テーブルデータのインポートとエクスポートの例

この記事では、MySQL テーブル データのインポートおよびエクスポート操作について説明します。ご参...

数ステップでサイバーパンク2077風の視覚効果を実現するCSS

背景記事を始める前に、賽博朋克とは何か、賽博朋克2077とは何かを簡単に理解しましょう。サイバーパン...

Vue3はJingdong製品詳細ページの虫眼鏡効果コンポーネントをカプセル化します

この記事では、Jingdong製品詳細ページの虫眼鏡効果コンポーネントに似たvue3カプセル化の具体...

デザイン理論:フォントデザインの基礎

<br />言葉は、人間の思考や感情を伝えるために必然的に生み出されるものです。人類の文...

Nuxt.jsプロジェクトのDockerデプロイメントの実装

Docker 公式ドキュメント: https://docs.docker.com/ Docker は...

一般的なMysql DDL操作の概要

図書館管理ライブラリを作成する データベースを作成します [存在しない場合] ライブラリ名;ライブラ...

Linux ファイルを分割するための split コマンドの詳細な説明

いくつかの簡単な Linux コマンドを使用すると、ストレージまたは電子メールの添付ファイルのサイズ...

Web デザイン TabIndex 要素

TabIndex は、Tab キーを押して、定義された TabIndex 要素を順番に取得し、各要素...