本文中に使われるフローコンテント要素の一覧
- 投稿日
- 更新日
HTML5 においてフローコンテントに分類される要素の内、現実的に、本文中で使われるであろう要素だけを抜粋しました。
CSS で余白を調整する場合には、これらを対象としておけば良いと思います。
選考基準は次の通りです。
- フローコンテントでありフレージングコンテントである要素は積極的に除く。
- 例えば b 要素などは除きました。普通は p 要素などに含まれるためです。
- kbd, samp 要素は、それらを利用する Web サイトが限定的である他に除きました。
- audio, img, video などのメディアはフローコンテントとして扱う。
CSS で指定する場合
本文が含まれるフローコンテントのクラス名を .main-content
とするとき、
隣接するフローコンテントとの余白 (margin) を指定しようとすると、次のようになります。
これは a 要素を例にしたパターンですが、実際には article, aside … とすべての組み合わせを記述する必要があります。
ただし、ここで挙げたすべての組み合わせを定義すると、(すべて改行した場合に) 1000 行を超えてしまいます。
CSS が長くなり、可読性も低下しますが、それを回避するためには全称 (Universal / *) セレクタ を使うしかありません。
(全称セレクタを使うパターンは後に続いて掲載しています)
全称セレクタはパフォーマンスを低下させる原因の 1 つですが、膨大な量の定義によるデータサイズの増加の方が、
パフォーマンスに対する影響が大きいと思われます。ここで紹介する定義の場合は、圧縮したとしても 25KB を超過します。
全称セレクタを使った場合は次のようになります。先のすべての組み合わせを表記するパターンとは異なり、これで完結しています。
CSS が短くなり、可読性も向上します。多少の描画速度の低下につながりますが、
すべての組み合わせを指定する場合と比較してファイルサイズが小さくなるので、
最終的なパフォーマンスは変わらないか、寧ろこちらの方が良いと思います。
処理コストの大きい子孫セレクタ >
を使わないような指定をしていますが、これが問題を起こす可能性があります。
例えば p 要素などに含まれる a 要素の後に、異なる別の要素が続くと描画の不具合を起こす可能性があります。
また、当然ですが、すべての要素に一律の余白を指定することはないでしょう。
例えば私の場合には見出し (h1 ~ h6) は、余白を大きめにとっています。