IE6~8でもCSS3セレクタが利用できるツールの決定版「Selectivizr」
CSS3セレクタを使う上で問題となるのはやはりIEです。HTML5 & CSS3 Supportで確認すると、IE6~8はほとんど対応できていないことが分かります。
そんなIEでもCSS3セレクタを使えるようにするのがSelectivizr.jsです。詳しく紹介されているサイトがあまりなかったのでご紹介。

Selectivizrの設置方法
ここで提供されているselectivizr.jsとJavaScriptライブラリを外部ファイルで読み込むだけで、CSS3セレクタがIE6~8でも利用可能となります。コードも外部ファイルを読み込むだけですのでとてもシンプルです。
<script type="text/javascript" src="[JSライブラリ]"></script> <!--[if (gte IE 6)&(lte IE 8)]> <script type="text/javascript" src="selectivizr.js"></script> <![endif]-->
最初はJavaScriptライブラリの設定ですので、jQueryやprototypeなどのjsライブラリを元々使っている場合は2~4行を追加するだけで大丈夫です。
jsライブラリによって対応できるセレクタが違う

このように使用するjsライブラリによって対応できるCSS3セレクタも違ってきます。使えるjsライブラリは次のとおりです。
CSS3セレクタについて
例えば下のセレクタ一覧で最初にあるE[foo^="bar"](foo属性の値がbarで始まっているE要素) というのは具体的には以下のようになります。
a[href^="http"] { color:red; }
href属性の値がhttpで始まっているa要素に対してスタイルが適用されます。というわけで、このようなリンクには適用されます。
<a href="http://weboook.blog22.fc2.com/">リンク</a>
で、このようなリンクには適用されません。
<a href="index.html">リンク</a>
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:nth-last-child(n) | 親要素の後から数えてn番目の子要素 |
E:nth-of-type(n) | 兄弟関係にあるn番目のE要素 |
E:nth-last-of-type(n) | 最後から数えてn番目にある要素 |
E:last-child | 最後にある子要素 |
E:first-of-type | 兄弟関係にある最初のE要素 |
E:last-of-type | 兄弟関係にある最後のE要素 |
E:only-child | 唯一の子要素であるE要素 |
E:only-of-type | 兄弟関係にあるE要素 |
E:empty | 子要素を持たないE要素 |
E:target | 参照URIの目標となっているE要素 |
E:enabled | 有効になっている(:enabled)E要素 |
E:disabled | 無効になっている(:disabled)E要素 |
E:checked | ラジオボタンやチェックボックスがチェックされた状態のときにE要素 |
E::selection | ユーザが選択したE要素の一部 |
E::before | E要素の内容の前 |
E:not(s) | sでないセレクタを持つE要素 |
E ~ F | E要素の後にあるF要素 |
Selectivizrの注意点
jsライブラリはGoogle Libraries APIでも大丈夫
私は普段Google Libraries APIのjQueryを使っています。こんな感じですね。
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js" type="text/javascript"></script>
もちろんこれでもちゃんと動きます。
CSSは外部ファイルに記述する
Selectivizrは外部ファイルでCSSを指定しないと機能しません。
head内に記述せず、外部ファイル内でCSSを記述しましょう。
ローカルでは動かない
サーバにアップしないと動きません。ローカルで試したけど動かないので諦めるなんてことがあったらもったいないですね。

※コメントはご意見ご感想や間違いのご指摘等にしていただけますようお願いいたします。コメントを確認する時間がなく、技術的なご質問をいただいても答えできません。申し訳ございませんがご理解のほどお願いいたします。