CSS ポッドキャスト - 013: スペース
箱が 3 つあるとします 間隔が必要 そのためには、CSS でいくつの方法が思い浮かびますか。
margin プロパティを使用すると、必要な情報を取得できますが、
不要なスペースが追加されることがあります。
たとえば、各要素の間にあるスペースのみをターゲットに設定するにはどうすればよいでしょうか。
「gap」などが適している可能性があります。
UI 内のスペースを調整する方法はたくさんありますが、
それぞれに強みと注意点があります
HTML のスペース
HTML 自体には、要素の間隔を空ける方法がいくつかあります。
<br> 要素と <hr> 要素を使用すると、ブロック方向に要素を配置できます。
ラテン系の言語の場合
上から下になります。
<br> 要素を使用する場合、
改行が挿入されます。
ワード プロセッサで Enter キーを押すようなものです。
<hr> は、両側にスペースがある水平線(margin)を作成します。
HTML 要素を使用するだけでなく
HTML のエンティティを使用すると、スペースを作成できます。
HTML エンティティは予約された文字列で、ブラウザによって文字エンティティに置き換えられます。
たとえば
HTML ファイルに © と入力すると、
©の文字に変換されます
エンティティは、改行なしの空白文字に変換されます。
インライン スペースを提供します。
ただし、
なぜなら、この文字は分割しないという特徴により、2 つの要素をつなぎ合わせているからです。
異常な動作が発生する可能性があります
マージン
要素の外側にスペースを追加したい場合は
margin プロパティを使用します。
マージンは、要素の周囲にクッションを追加するようなものです。
margin プロパティは margin-top の省略形です。
margin-right、margin-bottom、margin-left。
margin 省略形は、特定の順序でプロパティを適用します。
上、右、下、左です。
覚えやすいよ、TRouBLe。
margin 省略形は、1、2、3 の値でも使用できます。
4 つ目の値を追加すると、それぞれの面を設定できます。
これらは次のように適用されます。
- 1 つの値がすべての面に適用されます。(
margin: 20px)を更新します。 - 値は 2 つあります。1 つ目の値は上下両側に適用されます。
2 つ目の値は左側と右側に適用されます。
(
margin: 20px 40px) - 3 つの値: 最初の値は
top、 2 つ目の値はleft、rightです。 3 つ目の値はbottomです。(margin: 20px 40px 30px)。
マージンは長さで定義できます。
パーセンテージまたは自動値(1em、20% など)。
割合で指定する場合は
値は、要素を含むブロックの幅に基づいて計算されます。
つまり、要素を含むブロックの幅が 250px の場合、
要素の margin 値が 20% の場合:
要素の両辺のマージンは 50px として計算されます。
マージンには値 auto を使用することもできます。
サイズが制限されているブロックレベルの要素の場合、
auto の余白は、適用された方向の空きスペースを占有します。
良い例です
フレックスボックス モジュールを使用します。このモジュールでは、アイテムが互いに押し出されます。
auto マージンのもう一つの好例は、最大幅の横方向の中央に配置されたラッパーです。
この種のラッパーは、ウェブサイトで一貫したセンターカラムを作成するためによく使用されます。
.wrapper {
max-width: 400px;
margin: 0 auto;
}
ここでは、上側と下側(ブロック)の余白が削除されています。
auto は、左右(インライン)のスペースを共有します。
マイナスの利益率
負の値はマージンにも使用できます。 隣接する兄弟要素の間にスペースを設けるのではなく 間のスペースが減ります。 その結果、要素が重なり合ったり、 使用可能なスペースを超える負の値を宣言すると、このエラーが発生します。
マージン折りたたみ
利益率の縮小は 注意が必要な概念です インターフェースを構築する際にはよく遭遇します。 見出しと段落の 2 つの要素があり、それぞれに縦方向の余白があるとします。
<article>
<h1>My heading with teal margin</h1>
<p>A paragraph of text that has blue margin on it, following the heading with margin.</p>
</article>
h1 {
margin-bottom: 2rem;
}
p {
margin-top: 3rem;
}
一見すると
段落と見出しの間隔を 5em と決めても問題ありませんが、
2rem と 3rem を合わせると 5rem になるからです。
ただし、縦方向の余白は縮小されるため、実際にはスペースは 3rem になります。
マージンの折りたたみは、隣接する 2 つの要素の最大値を選択することで機能します。
隣接する辺に垂直方向の余白を設定します
h1 の下部は p の上部と接触しています。
h1 の下余白と p の上余白の最大値が選択されます。
h1 の下余白を 3.5rem とすると、
それらの間のスペースは 3rem より大きいため、3.5rem になります。
ブロックの余白のみが折りたたまれ、インライン(水平)の余白は閉じません。
マージンの折りたたみ機能は、要素が空の場合にも役立ちます。
上下の余白が 20px の段落がある場合、
40px ではなく、20px のスペースのみが作成されます。
ただし、この要素内になんらかの要素が追加された場合、
padding を含む場合、余白は折りたたまれなくなり、コンテンツのあるボックスとして扱われます。
理解度をチェックする
余白の折りたたみに関する知識を確認する
2 つの要素が積み重ねられている場合は、両方に 20 ピクセルの上余白を設定します。 30 ピクセルの下余白がある場合、その間のスペースはどれくらいになりますか?
余白の折りたたみを防止しています
要素を絶対位置にすると
position: absolute を使用すると、余白が折りたたまれなくなります。
float プロパティを使用しても、マージンは折りたたまれません。
ブロック マージンが設定された 2 つの要素の間に余白のない要素がある場合、 余白も折りたたまれません ブロック マージンが設定された 2 つの要素は、もはや隣接する兄弟ではなく、単なる兄弟だからです。
レイアウト レッスンでは、 Flexbox と Grid のコンテナは ブロックコンテナによく似ていますが 子要素の処理方法も大きく異なります これはマージンの折りたたみについても同様です。
このレッスンの元の例を参考にして、フレックスボックスと列方向の 余白が合算され 表示されます。 これにより、レイアウト処理、 これに対応するために Flexbox と Grid のコンテナを設計しました
マージンとマージンの縮小はわかりにくいことがありますが その仕組みを詳しく理解しておくと役立ちます こちらの詳しい解説 を強くおすすめします。
パディング
箱の外にスペースを作るのではなく、
margin のように、
padding プロパティを使用すると、箱の内側にスペースが作られます。
断熱材のようなものです

使用しているボックスモデルに応じて異なります。モデルについては、
ボックス モデル レッスン
- padding も要素の全体的なサイズに影響する可能性があります。
padding プロパティは、padding-top、padding-right、padding-bottom、padding-left の省略形です。
margin と同様に、padding にも論理プロパティがあります。
padding-block-start、padding-inline-end、padding-block-end、padding-inline-start
位置付け
また、layout モジュールでも説明されていますが、
position に static 以外の値を設定した場合、
top、right、bottom、left プロパティを使用して、要素に間隔を空けることができます。
これらの方向の値の動作には次のような違いがあります。
position: relativeが指定された要素は、ドキュメント フロー内での位置を維持します。 パフォーマンスが向上します 要素の位置にも相対的になります。position: absoluteを含む要素 は、相対的な親の位置を基準として方向の値を設定します。position: fixedを含む要素 ビューポートを方向の値とします。position: stickyを含む要素 は、ホルダーが装着または停止している場合にのみ方向の値を適用します。
論理プロパティ モジュールでは、
inset-block プロパティと inset-inline プロパティについて学びます。
記述モードに対応する方向の値を設定できます。
どちらのプロパティも、start と end の値を組み合わせた省略形です。
そのため、start と end にどちらか一方の値を設定するか、
2 つの個別の値があります
グリッドとフレックスボックス
最後に、グリッドとフレックスボックスの両方で、gap プロパティを使用して子要素間のスペースを作成できます。
gap プロパティは row-gap と column-gap の省略形です。
1 つまたは 2 つの値(長さまたは割合)を指定できます。
unset、initial、inherit などのキーワードも使用できます。
1 つの値のみを定義する場合
行と列の両方に同じ gap が適用されます。
両方の値を定義すると
最初の値は row-gap、2 番目の値は column-gap です。
Flexbox と Grid のどちらも、分散や配置の機能を使用してスペースを作ることができます。 このモジュールで取り上げる grid モジュールと flexbox モジュール。
一貫したスペースの作成
戦略を選択して継続するのはとても良いことです。 をお役立てください。 これを実現するには、間隔に一貫した尺度を使用することをおすすめします。
たとえば、20px を使用することを確約できます。
要素間のすべてのギャップ(ガター)に対する一貫した尺度であるため、
すべてのレイアウトのデザインに一貫性があります。
また、フロー コンテンツ間の垂直方向のスペースとして 1em を使用することもできます。
これにより、要素の font-size に基づいて一貫した間隔が確保されます。
どちらを選択しても
これらの値を変数(または CSS カスタム プロパティ)として保存します。
これらの値をトークン化し、整合性を若干簡単にします。
:root {
--gutter: 20px;
--spacing: 1em;
}
h1 {
margin-left: var(--gutter);
margin-top: var(--spacing);
}
このようなカスタム プロパティを使用すると、一度定義すれば、 CSS 全体で使用できます これらが更新されると 要素内でローカルにすることも、グローバルに 値はカスケードに渡され、更新された値が反映されます。
理解度をチェックする
間隔に関する知識をテストする
次のような場合は、スペースの挿入に HTML を使用しても安全です。
ボックスの内側にスペースを作成するには、次のコマンドを使用します。
ボックスの外側にスペースを作成するには、次のコマンドを使用します。
ボックス間にスペースを作成するには...