background-color
の省略記法に知見がありましたので共有します。
海外の動画ですが、こちらを引用させていただいております。
background-color
は以下のように一括指定記法を用いてbackground
で省略することができます。
div {
background: #fff;
}
しかし、このような場合はどうでしょうか。
<div class="hero inverted">This is hero area</div>
.hero {
background-image: url(./images/hero.jpg);
background-size: cover;
height: 500px;
font-size: 5rem;
text-align: center;
line-height: 500px;
}
.inverted {
color: #fff;
background: #333;
}
同一のdiv
内に複数のクラスを設定しており、.inverted
で一括指定記法を使って背景に#333
を指定しています。
これはこのように表示されます。
.hero
で指定しているはずの背景画像が表示されません。
原因を開発ツールで確認してみましょう。
background-image
がinitial
で上書きされ、.hero
で指定した背景画像が無効化されています。
これはなぜかというと、.inverted
で一括指定記法で記述したbackground-color
以外は指定なしと見做され、initial
が指定されているというわけです。initial
は初期値という意味です。
参考にbackground
で関連のプロパティー一覧です。
プロパティ | 初期値 | 意味 |
---|---|---|
background-image | none | 背景画像を設定する |
background-position | 0% 0% | 背景画像の初期位置を設定する |
background-size | auto auto | 要素の背景画像の寸法を設定する |
background-repeat | repeat | 背景画像をどのように繰り返すかを設定する |
background-attachment | scroll | 背景画像の固定・移動を指定する |
background-origin | padding-box | 背景の基準位置を指定する |
background-clip | border-box | 背景の適用範囲を指定する |
background-color | transparent | 背景の色を指定する |
画像を表示させるには、きちんとbackground-color
と省略せずに記述すればOKです。
.inverted {
color: #fff;
background-color: #333;
}
意図したところにのみCSSが当たります。
この例からもわかる通り、そもそもbackground
はbackground-
に続く複数のプロパティを一括で指定するためのものであり、ただ省略したいがために使うべきではありません。
私は元々きちんとbackground-color
を使う派だったのですが、一時期調べ物をしているうちにbackground
で省略している記事が非常に多いことから真似をして省略するようになってしまいました。今でもかなり見かけます。
意図して省略しているならいいですが、そうでなければ省略はすべきではないと私は思います。