margin-bottomに統一するための方法
margin
は相殺が発生するプロパティなため、margin-top
とmargin-bottom
が混在しているとCSSのメンテがつらくなる。私はmargin-bottom
教信者なので、それを布教したい。
Bootstrapの教え
margin-top は避けてください。垂直方向のマージンが壊れ, 予期しない結果が生じる可能性があります。 重要なのは単一の方向性がmarginより単純なメンタルモデルであることです。できるだけスタイルを継承して, fontや関連するプロパティの宣言を最小限に抑えてください。
隣接セレクタ(次兄弟結合子)でmargin向きが変わる
margin-bottom
で統一したいのに、リストコンポーネントのマージンをとるときに隣接セレクタを使用するとmargin-top
が必要になることが多々ある。
/* margin-bottomに統一 */
.title {
margin-bottom: 1rem;
}
.content {
margin-top: 1rem;
}
/* 隣接セレクタを使うとmarginの向きが変わる */
.item + .item {
margin-top: 1rem;
}
その対処法としては、:last-child
疑似クラスでmargin-bottom: revert
を使ってmarginをリセットする方法がある。revertを使うことで、margin-bottom
に統一しつつ、最後の要素にはmargin-bottom
を適用しないようにできる。
.item {
margin-bottom: 1rem;
}
.item:last-child {
margin-bottom: revert;
}
リストのmarginはgapを使う
昨今のCSS事情を考えるとリストのようなコンポーネントの要素間はgap
を使うのが良い。
.item-list {
gap: 1rem;
}