HTML側にclassを追加したりCSSを直書きすることは出来ない環境においてCSSの擬似クラスを利用してコーディングする際、『特定のclassを除外する』CSSを用いてスマートなコーディングが出来ます。
特にWordPress環境では、bodyタグにclassがたくさん記述されるので、その記述のなかのclassを拾い出して除外する手法でコーディングを行ってみました。
CSS3の擬似クラス『:not()』
bodyタグに記述される『.home』に対して、トップページ「以外」に適用したいCSS(トップページだけは除外するCSS)を記述します。
都合良くサブページにはサブページ用のクラスが記述されていれば良いのですが、CMS等によりページが新規追加された際に任意のページ名がclassとして記述される事が多々あります。
HTMLを変更することが出来ない、どんなclass名になるかわからない今後追加されるであろうページに対してCSSを予め設定しておくことを目的とします。
HTMLとCSS
HTML(わかりやすいようにbodyタグではなくdivタグを使います)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
<div class="home"> <h2>ホームページ想定<span>home</span></h2> </div> <div class="sub"> <h2>サブページ想定<span>sub</span></h2> </div> <div class="page"> <h2>サブページ想定<span>page</span></h2> </div> <div> <h2>サブページ想定<span>nonclass</span></h2> </div> |
CSS
1 2 3 4 |
div:not(.home) h2 span { color:red; /* .home以外のdiv内のh2のspanの文字色を赤にする */ } |
まとめ
「全ページ共通のCSSで文字色を赤にしておいて、トップページのみ黒にすれば良いじゃないか。」と言われればそうなのですが、スマホ対応にしろその他のコーディングにしろ、今回のケースのような単純なものばかりではありません。
レスポンシブなスマホ対応でCSSを上書きしたり、複雑なコーディングがなされている海外テンプレートなどでは、汎用的なCSSに引っ張られてうまくコーディング出来ず「!important」を使用して力技で済ませてしまう事もあります。
除外するCSSを利用することによって、もっと柔軟なコーディングが出来るのではないでしょうか。
例えばWordPressですと、絵文字には「.emoji」とクラス指定されたりしています。絵文字ではないimgタグに対してCSSを適用する場合には重宝すると思います。
幸いなことに、最近の主要ブラウザーでは問題なく使用出来ますので「そう言えば除外出来るんだっけな」と頭の片隅にでも置いておくことで、今後何かの役に立つかもしれません。
この記事を読んだ方はこちらも読まれています
カレンダー
- 12月 2024
- 11月 2024
- 10月 2024
- 9月 2024
- 8月 2024
- 7月 2024
- 6月 2024
- 5月 2024
- 4月 2024
- 3月 2024
- 2月 2024
- 12月 2023
- 11月 2023
- 10月 2023
- 9月 2023
- 8月 2023
- 7月 2023
- 6月 2023
- 5月 2023
- 4月 2023
- 3月 2023
- 2月 2023
- 1月 2023
- 12月 2022
- 11月 2022
- 10月 2022
- 9月 2022
- 8月 2022
- 7月 2022
- 6月 2022
- 5月 2022
- 4月 2022
- 3月 2022
- 12月 2021
- 11月 2021
- 10月 2021
- 9月 2021
- 8月 2021
- 7月 2021
- 6月 2021
- 5月 2021
- 4月 2021
- 3月 2021
- 2月 2021
- 1月 2021
- 12月 2020
- 11月 2020
- 8月 2020
- 6月 2020
- 5月 2020
- 4月 2020
- 3月 2020
- 2月 2020
- 1月 2020
- 12月 2019
- 11月 2019
- 10月 2019
- 9月 2019
- 8月 2019
- 7月 2019
- 6月 2019
- 5月 2019
- 4月 2019
- 3月 2019
- 2月 2019
- 1月 2019
- 12月 2018
- 11月 2018
- 10月 2018
- 9月 2018
- 8月 2018
- 7月 2018
- 6月 2018
- 5月 2018
- 4月 2018
- 3月 2018
- 2月 2018
- 1月 2018
- 12月 2017
- 11月 2017
- 10月 2017
- 9月 2017
- 8月 2017
- 7月 2017
- 6月 2017
- 5月 2017
- 4月 2017
- 2月 2017
- 1月 2017
- 12月 2016
- 11月 2016
- 8月 2016
- 7月 2016
- 6月 2016
- 5月 2016
- 4月 2016
- 3月 2016
- 2月 2016
- 1月 2016
- 12月 2015
- 11月 2015
- 10月 2015
- 9月 2015
- 5月 2015
- 4月 2015
- 3月 2015
- 2月 2015
- 1月 2015
- 12月 2014
- 11月 2014
- 10月 2014
- 9月 2014
- 8月 2014
- 7月 2014
- 6月 2014
- 5月 2014
- 4月 2014
- 2月 2014
- 1月 2014
- 12月 2013
- 11月 2013
- 10月 2013
- 9月 2013
- 8月 2013
- 7月 2013