:not(#not) :not(#not) p

コーディング規約で!importantを禁止されているプロジェクトで、それらしきものを実現しようと考えている。最終的に:not(#not) :not(#not) pというセレクターをひねり出した。ウェブページでは、ブラウザーがhtmlbody要素を補完するので、すべてのp要素に必ずマッチする。そして、詳細度が2,0,1と、かなり高くなるため、ルールセットが!importantにかなり近い強さになる。

:not(#not)はいくつでも書ける。しかし、補完される2つの要素分以外は、HTMLのツリー構造に依存するので、注意が必要だ。セレクターのため、ブロック(ルールセット)が明示的に分かれ、追加と削除が明確な分、!importantよりも作業しやすい。:not()疑似クラスの基本サポートはかなり古い(10年以上)ため、そういう点でも問題はない。

何かおかしいところを直すために一時的に使い、根本的に解決出来たら消す用途に使おうと思っている。ほとんどの人が見たことがないので、かなり書きづらい。こっそり書いたが、まだ見つかっていない。