全ての<p>
タグに対してスタイルを当てたかったのですが、単純にやってしまうと、#hoge
以下の表示が崩れてしまうことがありました。そこで、#hoge
に囲まれていない<p>
に対してCSSを当てる方法のご紹介です。
目次
:not(#hoge) p{
/* 当てたいスタイルシート */
}
:not()
は()
内のセレクタ以外のものにマッチします。
そのため、:not(#hoge) p
は「<p>
タグのうち#hoge
に含まれていないもの」という意味になります。
そもそも、p
にスタイルを当てて、#hoge p
でオーバーライドするのが普通で、今回のような書き方はあまり良いものとは言えません。とはいえ、後から後から修正を加えていくと、どこかで、影響範囲が大きすぎるため、このようなパッチ的なコードを書いてしまうことがあります。
こういうコードを書いてしまった時はTODOコメントを残して、折を見て、リファクタリングしたほうがよいです。
とはいえ、:not()
指定子は知っておくといろいろなところで使えると思うので、是非、覚えておきましょう。