HTML の各要素の上下のマージンを、それぞれの要素の margin-top
や margin-bottom
で設定していると、ちょっとした調整が全体のレイアウトの崩れにつながります。
Owl セレクタ(ふくろうセレクタ) と呼ばれている * + *
という CSS セレクタを利用すると、全要素のマージンをまとめて設定することができるので、サイト全体のレイアウトに一貫性を持たせることができます。
* + *
という指定は、ユニバーサルセレクタ (*
) と隣接セレクタ (+
) の組み合わせから成っており、要するに、連続する 2 番目以降の要素をすべて選択するという意味になります。
* + *
によって選択された要素の上マージン (margin-top
) を設定してやることで、要素間のマージンをまとめて設定できます。
下記の例では、main
要素直下に配置された、すべての要素間に 1rem
のマージンを設定しています(つまり、そのページのフォントサイズで1行分のマージン)。
ただし、h2
や h3
などのヘッダの上マージンまで同じサイズになってしまうと、セクションごとのまとまりが分かりにくくなってしまいます。
そこで、ヘッダに関しては特別に 1.5em
のマージンを設定しています。
このマージンには、単位として rem
ではなく、em
を使用していることに注意してください。
em
を使用することで、ヘッダ自身のフォントサイズを基準として、1.5 行分のマージンが設定されることになります。
つまり、h2
要素のマージンの方が、h3
要素のマージンよりも大きくなるということです(h2
のフォントサイズの方が大きければですが)。