より便利になったCSS3の追加セレクタ

より便利になったCSS3の追加セレクタ

CSS3の特徴としては、CSS2.1よりも、属性セレクタや擬似クラスなどのセレクタが大幅に拡張されている点が挙げられます。

CSS2.1の属性セレクタでは完全一致による指定しかできませんでしたが、CSS3では、より細かく部分一致で指定できます。次のサンプルは、リンクの種類によってウィンドウアイコンやpdfアイコンを表示するものです。

3

図3:アイコンによってクリック前にリンク先の内容がわかる

これまでは、a要素にclass属性を指定して制御するのが一般的でしたが、「a要素のhref属性がhttpで始まる」という指定や「a要素のhref属性がpdfで終わる」という指定を属性セレクタで制御できて便利です。

[リスト01]CSS3の属性セレクタでは部分一致による指定が可能

a[href^=http]{  /* a要素のhref属性がhttpで始まる場合 */
  background:url("window.gif") no-repeat right center;
  padding-right: 30px;
}
a[href$=pdf]{  /* a要素のhref属性がpdfで終わる場合 */
  background:url("pdf.gif") no-repeat right center;
  padding-right: 30px;
}

また擬似クラスセレクタにおいても、HTMLソースをシンプルにできる便利なものが増えています。次のサンプルは、横並びのテキストリンクの間に区切り線を入れたよく使われるナビゲーションです。

3

図4:間に区切り線のある横並びのテキストリンク

これは、li要素をinline表示にして横並びにし、border-rightプロパティで区切り線を表現したものです。末尾に不要な区切り線が表示されないようにするため、CSS2.1では、最後のli要素にclass属性を追記して制御するのが一般的です。CSS3であれば、last-child擬似クラスで、簡単に最後のli要素に対してスタイルを適用することができるので、HTMLにデザインのためのコードを加える必要がありません。

[リスト02]last-child擬似クラスで、末尾の区切り線を表示しない

ul#nav li {
  display: inline; /* インライン表示で横並びに */
  border-right: 1px solid #ccc; /* 右側に区切り線 */
}
ul#nav li:last-child {
  border-right: none; /* 最後のli要素の場合、区切り線を表示しない */
}

次の表2は、CSS3で追加されたセレクタです。

表2:CSS3で追加されたセレクタ一覧

パターン説明
E[foo^="bar"]属性「foo」の値が「bar」と前方一致するE要素
E[foo$="bar"]属性「foo」の値が「bar」と後方一致するE要素
E[foo*="bar"]属性「foo」の値が「bar」と部分一致するE要素
E:rootドキュメントのルートにあるE要素
E:nth-child(n)n番目の子要素E
E:nth-last-child(n)最後からn番目の子要素E
E:nth-of-type(n)兄弟関係にあるもののうちn番目のE要素
E:nth-last-of-type(n)兄弟関係にあるもののうち後ろからn番目のE要素
E:last-child最後の子要素E
E:first-of-type兄弟関係にあるもののうち最初のE要素
E:last-of-type兄弟関係にあるもののうち最後のE要素
E:only-child兄弟関係の要素がない子要素E
E:only-of-typeある要素内で唯一の要素E
E:empty an子要素(テキストノードを含む)を持たないE要素
E:target参照URIのターゲットであるE要素
E:enabled有効にされているUI要素E
E:disabled無効にされているUI要素E
E:checkedチェック状態のUI要素E(例えば、ラジオボタンやチェックボックスなど)
E:not(s)セレクタs以外のE要素
E ~FE要素の後に出現するF要素

ベンダープレフィックスとは

CSS3の仕様は、まだ策定段階にあるため、将来的には変更される可能性もあります。あくまで先行実装であるということを識別するため、仕様が草案段階にある時に、これら機能を利用する場合は、プロパティや値の先頭にベンダープレフィックス(接頭辞)を付けることが推奨されています。

ベンダープレフィックスは、前後に「-」を付けたベンダー識別子でブラウザの種類を特定するもので、FirefoxのようなMozilla系ブラウザなら「-moz-」、Google ChromeやSafariなどのwebkit系のブラウザなら「-webkit-」となります。

表3:ベンダープレフィックスの種類

ベンダープレフィックスブラウザ
-moz-Mozilla系ブラウザ(Firefox)
-webkit-webkit系ブラウザ(Google Chrome、Safari)
-o-Opera
-ms-Internet Explorer

ベンダープレフィックスは、草案が勧告候補になった時には、外すよう推奨されています。また、FirefoxやGoogle Chrome、Operaなどのブラウザでは、一部のCSS3の機能が、ベンダープレフィックス無しでも動作するようになっています。したがって現状では、ベンダープレフィックス付きの指定と、将来に備えたベンダープレフィックス無しの指定の両方を併記するのが良いでしょう。

[リスト03]現状では、ベンダープレフィックス無しと有りの記述を併記するのがベター

  -webkit-border-radius: 10px; /* webkit系ブラウザ(Google Chrome、Safari)用 */
  -moz-border-radius: 10px; /* Mozilla系ブラウザ(Firefox)用 */
  border-radius: 10px;  /* 将来の標準のCSS */

人気記事トップ10

人気記事ランキングをもっと見る

企画広告も役立つ情報バッチリ! Sponsored

ClickHouse Cloudが実現した広告運用SaaS「ATOM」のデータ基盤革新、パフォーマンスを向上しながら、運用負荷とコストを削減 11月11日 6:20 AIで開発が加速する時代、品質保証はどう変わる? Tricentisが示すAIエージェント活用の実像 11月9日 6:45 悪用までの猶予が「1分」に迫るフロンティアAI時代に開発と本番を貫く脆弱性管理が必要 10月29日 8:30 欧州CRA対応とSBOM運用。AI生成コードのOSS混入問題の対策とは ――スニペット単位で検出する「FossID」「Insignary Clarity」によるSBOM運用 9月16日 6:40 PostgreSQLからTiDBへ、稼働中SaaSで進める段階的DB移行の実践と再設計への展望 9月7日 6:30 機能安全開発におけるGoogleTestの活用を支援!「Parasoft C/C++test CT」で実現する効率化&AI連携 4月14日 6:30 【CNDW2025】Grafanaが明かす「オブザーバビリティの哲学」ー最小限の労力で実用的なインサイトを得るには 1月23日 6:30 【CNDW2025】プロダクト急増に備える基盤刷新 ーウェルスナビがECSからEKSへの移行で得た知見とは 1月15日 6:30 【CNDW2025】250環境を5人で運用、構築時間は30分に ーKINTOテクノロジーズが語るインフラ基盤組織の作り方 2025年12月18日 6:30 新たな自動化で熱視線! AIエージェントの「推論能力」を支える2つのコンポーネントとは? 2025年11月28日 6:30