CSS gap
属性は新しいものではありませんが、昨年は大きな新機能を獲得しました。現在、CSSグリッドだけでなくFlexBoxでも機能します。それを考えると、そして私はそのプロパティが見た目よりも複雑だと思いますが、私はそれがどのように機能するかを正確にレビューして説明したいと思います。
gap
とそれらの関連する特性を詳しく見て、それらがどのように、どこで働くかを理解しましょう。
すべてのギャッププロパティ
まず、すべてのgap
関連のCSSプロパティを確認しましょう。合計6つあります:
-
grid-row-gap
-
grid-column-gap
-
grid-gap
-
row-gap
-
column-gap
-
gap
このリストから、最初の3つのプロパティを無視できます。 grid-*
属性は、CSSグリッド仕様の起草の早い段階で追加され、 gap
がより一般的になったときに後に廃止されました。ブラウザは依然としてこれらの非推奨grid-*
プロパティ(この執筆時点で)をサポートしており、非grid-
プレフィックスとしてのみ扱います。したがって、 grid-gap
はgap
と同じ、 grid-column-gap
column-gap
と同じ、 grid-row-gap
はrow-gap
と同じです。
他の3つのプロパティに関しては、 gap
他の2つのプロパティを指定できる略語であることを考慮すると、 row-gap
とcolumn-gap
何をするかを実際に知る必要があります。
これらのプロパティを理解することは、使用するCSSレイアウトのタイプに依存します。まずこれらのオプションを見てみましょう。
ギャップはどこで使用できますか?
あなたが私のような場合は、グリッドレイアウトでgap
を使用しましたが、今ではFlexBoxやマルチコラムレイアウトでも使用できます。各状況を確認しましょう。
グリッドのギャップ
すべてのブラウザは、グリッドレイアウトのgap
をサポートしており、このコンテキストでは非常に簡単に理解できます。
-
row-gap
、行トラック間にスペースを紹介します -
column-gap
列の軌道間にスペースを導入します
3つの列と2行のグリッドを作成しましょう。
<code>.container { display: grid; grid-template-columns: 200px 100px 300px; grid-template-rows: 100px 100px; }</code>
これにより、次のグリッドが得られます。
上の図の線はグリッドラインと呼ばれ、グリッドのトラック(行と列)を分離します。これらの線はグリッドには実際には存在しません - 目に見えず、厚さはありません。通常、グリッドインスペクター(Safari、Firefox、Edge、またはChrome)を有効にすると、DevToolsが表示するものです。
ただし、グリッドにギャップを追加し始めると、これらのラインが厚さになり始めるように機能します。
20pxギャップを追加しましょう:
<code>.container { display: grid; grid-template-columns: 200px 100px 300px; grid-template-rows: 100px 100px; gap: 20px; }</code>
これで、トラック間のラインが厚さ20pxなので、グリッドプロジェクトをさらに押し上げます。
したがって、トラックgrid-template-*
まだ同じサイズを持っていることに注意してください。
グリッドでは、 row-gap
は常に行トラック間で適用されます。したがって、上記の例でgap
row-gap
に置き換えると、次のようになります。
column-gap
は常に列トラック間に適用されるため、 gap
column-gap
に置き換えると、次の結果が生成されます。
グリッドは簡単です。デフォルトでは、列が垂直であり、行がテーブルのように水平になるためです。したがって、 column-gap
とrow-gap
アプリケーションがどこにあるかを覚えるのは簡単です。
writing-mode
を使用すると、物事はもう少し複雑になります。ネットワーク上のデフォルトの書き込みモードは左から右への水平モードですが、垂直書き込みモードもあります。これが起こると、列が水平になり、行が垂直になります。通常のように直感的ではない可能性があるため、常にwriting-mode
に注意を払ってください。
列と行がFlexBoxで新しい意味を得るため、これは次のセクションへの適切な移行です。
フレックスボックスのギャップ
Flexboxレイアウトのギャップについて話しましょう。ここでは、物事がもう少し複雑になります。次の例を使用します。
<code>.container { display: flex; }</code>
デフォルトでは、これにより、列のフレックスコンテナが得られます。つまり、コンテナ内のアイテムは左から右に同じ水平線に積み重ねられています。
この場合、 column-gap
はプロジェクト間に適用され、 row-gap
効果がありません。これは、1行(または行)が1つしかないためです。しかし、プロジェクト間にいくつかのギャップを追加しましょう。
<code>.container { display: flex; column-gap: 10px; }</code>
次に、コンテナのflex-direction
を列に切り替えます。次のコードを使用して、アイテムを上から下に垂直に積み重ねます。
<code>.container { display: flex; flex-direction: column; column-gap: 10px; }</code>
次に何が起こるか:
ギャップは消えました。 column-gap
、コンテナが列の方向にあるときにアイテム間にスペースを追加しますが、列方向に動作しなくなります。
row-gap
を使用して取得する必要があります。あるいは、両方向に同じギャップを適用する値でgap
略語を使用することができるため、どちらの場合も機能します。
<code>.container { display: flex; flex-direction: column; gap: 10px; }</code>
したがって、全体として、 column-gap
常に垂直に動作します(デフォルトのwriting-mode
を仮定して)、 row-gap
常に水平方向に動作します。これは、フレックス容器の向きに依存しません。
しかし、今度はラインブレークを含む例を見てください:
<code>.container { display: flex; flex-wrap: wrap; column-gap: 40px; row-gap: 10px; justify-content: center; }</code>
ここで、スペースがすべてを1行に保持するのに十分でない場合は、プロジェクトがflex-wrap: wrap
を使用して複数のラインにラインをラップすることを許可します。
この場合、 column-gap
はプロジェクト間に垂直に適用され、2つのフレックス行の間にrow-gap
が水平に適用されます。
これとグリッドには興味深い違いがあります。列のギャップは、必ずしもフレックス行間に並べられているわけではありません。これは、 justify-content: center
プロジェクトをFlex Line内に中心にするためです。これにより、各フレックス行は、他の行とは独立してギャップが適用される別のレイアウトであることがわかります。
複数の列ギャップ
マルチコラムは、従来の新聞記事で予想されるように、コンテンツが複数の列間で自動的に流れるのを非常に簡単にするレイアウトタイプです。列の数を設定し、各列のサイズを設定します。
マルチコラムレイアウトのギャップは、グリッドやフレックスボックスとほとんど同じように機能しません。 3つの顕著な違いがあります。
-
row-gap
には効果がありません。 -
column-gap
には、0ではないデフォルト値があります。 - ギャップはスタイリングできます。
1つずつ分解しましょう。まず、 row-gap
には効果がありません。マルチコラムレイアウトでは、行を分離する必要はありません。これはcolumn-gap
のみが関連する(およびgap
略語)ことを意味します。
第二に、グリッドやフレックスボックスとは異なり、マルチコラムレイアウトのcolumn-gap
のデフォルト値は1EM(0ではなく)です。したがって、ギャップがまったく指定されていなくても、コンテンツ列はまだ視覚的に分離されています。もちろん、デフォルトではオーバーライドできますが、これは良いデフォルトです。
これが、例の基礎となるコードです。
<code>.container { column-count: 3; padding: 1em; }</code>
最後に、マルチコラムレイアウトで列間のスペースをスタイリングできます。 border
と同様に機能するcolumn-rule
プロパティを使用します。
<code>.container { column-count: 3; column-gap: 12px; column-rule: 4px solid red; padding: 12px; }</code>
ブラウザのサポート
gap
あらゆる面で十分にサポートされています。 Caniuseに関する詳細情報はありますが、要するに:
- FlexBox:
gap
は、Android用のインターネットエクスプローラー(排除されようとしている)、Opera Mini、UCブラウザーを除くどこでもサポートされています。 Caniuseのグローバルサポート率は87.31%です。 - グリッド:同様に、しかし、93.79%のグローバルな承認評価が見られます。
- 複数の列:同様に、しかしSafariではサポートされていませんが、グローバルなサポート率は75.59%です。
したがって、全体として、 gap
プロパティは十分にサポートされており、ほとんどの場合、回避策は必要ありません。
フレックスとグリッドの間のギャップのスタイルを設定する
FlexBoxとCSSグリッドのギャップをスタイリングすることは非常に便利です。残念ながら、今日はどこでもサポートされていません。しかし、良いニュースは、近い将来に実現される可能性があるということです。これはCSSワーキンググループで議論されており、Firefoxで開発されています。 Firefoxで効果的な実装と仕様の提案が得られたら、他のブラウザで実装を促進する可能性があります。
一方、いくつかの解決策があります。
1つの方法は、グリッドコンテナに背景色を与え、プロジェクトに別の色を与え、最後にギャップを残してコンテナの色を表示することです。
これは機能しますが、ギャップを使用してプロジェクト間にスペースを導入できないことを意味します。ここでのギャップは、境界幅として機能します。したがって、アイテムをより明確に視覚的に分離するには、アイテムにパディングまたはマージンを使用する必要がありますが、これは理想的ではありません。次のセクションで表示されるように。
マージンやパディングだけを使用できませんか?
はい、ほとんどの場合、 margin
(および/またはpadding
)を使用して、レイアウト要素間に視覚的なスペースを追加することもできます。しかし、 gap
にはいくつかの利点があります。
まず、ギャップはコンテナレベルで定義されます。これは、レイアウト全体でそれらを一度定義することを意味し、それらは常にレイアウトに一貫して適用されます。使用するマージンを各アイテムで宣言する必要があります。これは、プロジェクトが異なる性質のものである場合、または異なる再利用可能なコンポーネントから来る場合に複雑になる可能性があります。
最も重要なことは、 gap
デフォルトで正しい操作を実行するために単一のコードのみを必要とすることです。たとえば、フレックスプロジェクトを囲むのではなく、フレックスプロジェクト間にスペースを導入しようとすると、マージンでは、最初のプロジェクトの前に余分なマージンと最後のプロジェクトの後の余分なマージンを削除するために特別な状況が必要です。ギャップを使用すると、これを行う必要はありません。
margin: 0 20px
各フレックスプロジェクトでは、次のようになります。
ただし、 gap: 40px
使用して、次のようになります。
また、グリッドレイアウトでは、コンテナレベルでのギャップを定義することは、各アイテムのマージンを定義し、グリッドエッジに適用されるマージンを考慮するよりもはるかに簡単で優れています。
margin: 20px
:
代わりに、グリッドコンテナでgap: 40px
使用します。
空きスペースの蓄積
これまでに言ったことすべてに基づいて、 margin
とgap
相互に排他的である必要はありません。実際、レイアウトのプロジェクトをさらに分離するには多くの方法があり、それらはすべてうまく機能します。
gap
プロパティは、レイアウトコンテナ内のボックスの間に作成された空きスペースの一部にすぎません。 margin
、 padding
、アライメントはすべて、 gap
が定義されたスペースを増加させる可能性があります。
特定の幅、ギャップ、コンテンツ分布( justify-content
を使用)、およびマージンとパディングを使用して、単純なフレックスレイアウトを構築する例を考えてみましょう。
<code>.container { display: flex; gap: 40px; width: 900px; justify-content: space-around; } .item { padding: 20px; margin: 0 20px; }</code>
このコードが次の結果を生み出すと仮定しましょう。
次に、プロジェクト間の空白のスペースがどのように作成されるかを正確に見てみましょう。
ご覧のとおり、2つの連続したフレックスプロジェクトの間には4つの異なるタイプの空白スペースがあります。
- 2つの連続したプロジェクトの間に、ギャップはこれらのプロジェクト間の最小スペースを定義します。この場合のように、より多くのスペースがあるかもしれませんが、スペースが少なくなることはありません。
- マージンはプロジェクトをさらに押し上げますが、ギャップとは異なり、すべてのプロジェクトの両側にスペースが追加されます。
- 充填は、各プロジェクト内のいくつかのスペースを提供します。
- 最後に、十分なスペースが残っている場合にのみ、コンテンツの分布が有効になり、
space-around
値に基づいてフレックス行内のアイテムを均等に配布します。
デバッグギャップ
私に非常に近いトピックで終わりましょう:Devtoolsのデバッグギャップのサポート。エラーは常にあり、DevToolsが私たちをサポートできることを知ることは非常に喜ばしいことですが、どのツールが私たちを助けることができるかを知る必要があります。
gap
については、非常に便利な2つの特定の機能を考えることができます。
私のギャップは有効ですか?
gap
を間違えたり、無効な値を提供したりしない限り、このプロパティは常にページに適用されます。たとえば、これは正しいです:
<code>.some-class { display: block; gap: 3em; }</code>
それは何もしませんが、それは有効なCSSであり、ブラウザはブロックレイアウトではgap
が機能しないことを気にしません。ただし、Firefoxには、これを行う「非アクティブCSS」と呼ばれる機能があります。意味のあるものに適用される効果的なCSSを気にします。この場合、Firefox Devtoolsは検査官に警告を表示します。
私のギャップはどこにありますか?
ChromeとMicrosoft Edgeには、非常に便利なデバッグギャップ機能もあります。ブラウザと他のブラウザの両方をサポートするオープンソースプロジェクトであるChromiumにレイアウトデバッグツールを構築することを目的として、MicrosoftとGoogleの間のコラボレーションを通じて追加されました。これらのブラウザでは、Stylesパネルのさまざまなプロパティの上にホバリングして、それらがページにどのように影響するかを確認できます。
それでおしまい。この記事は、CSSでの中間ギャップがどのように機能するかの詳細のいくつかを理解するのに役立つことを願っています。
以上が「ギャップ」を気にするの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

CSSグリッドは、複雑で応答性の高いWebレイアウトを作成するための強力なツールです。設計を簡素化し、アクセシビリティを向上させ、古い方法よりも多くの制御を提供します。

記事では、レスポンシブデザインにおけるスペースの効率的なアラインメントと分布のためのレイアウト方法であるCSS FlexBoxについて説明します。 FlexBoxの使用量を説明し、CSSグリッドと比較し、ブラウザのサポートを詳細に説明します。

この記事では、ビューポートメタタグ、柔軟なグリッド、流体メディア、メディアクエリ、相対ユニットなど、CSSを使用してレスポンシブWebサイトを作成するための手法について説明します。また、CSSグリッドとフレックスボックスを使用してカバーし、CSSフレームワークを推奨しています

この記事では、要素の寸法の計算方法を制御するCSSボックスサイズのプロパティについて説明します。コンテンツボックス、ボーダーボックス、パディングボックスなどの値と、レイアウト設計とフォームアライメントへの影響について説明します。

記事では、CSS、キープロパティ、およびJavaScriptとの組み合わせを使用してアニメーションの作成について説明します。主な問題は、ブラウザの互換性です。

記事では、3D変換、主要なプロパティ、ブラウザの互換性、およびWebプロジェクトのパフォーマンスに関する考慮事項にCSSを使用して説明します。

この記事では、CSSグラデーション(線形、放射状、繰り返し)を使用して、ウェブサイトのビジュアルを強化し、深さ、フォーカス、および現代の美学を追加します。

記事では、CSSの擬似要素、HTMLスタイリングの強化における使用、および擬似クラスとの違いについて説明します。実用的な例を提供します。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

DVWA
Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター

Dreamweaver Mac版
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









