以前IE7CSS問題のまとめと対策というエントリを書いたところ結構好評だったようで、はてブやdeliciousで(うちみたいな小さなサイトとしては)多くのブックマークを頂きました。ところが、本日のCSSniteにてその中の一部の手法があまり好ましくないことが発覚。タイトルはちょっと乱暴に言い切ってますが、さっそく訂正。
Cascading Style Sheet Compatibility in Internet Explorer 7では、
Using Conditional Comments
Conditional comments have been available since Microsoft Internet Explorer 5, and provide easy and maintainable ways to detect IE’s browser type and version. Since the syntax is based on comments, other browsers will just ignore the statements. This is a great way to replace filters like the * HTML filter that specifically tries to target IE. To keep it clean we propose that you use conditional comments to set up a link to an IE-specific style sheet.
<!–[if IE]>
<link rel=”stylesheet” type=”text/css” href=”iestyles.css” />
<![endif]–>
とのことだったので「Microsoft IEチームは条件付コメントを推奨している」と解釈して、条件付コメントを紹介したのですが、CSSniteに来ていたMicrosoftの方によると「JapanとUSのIEチームとでいろいろな見解はあるものの、条件付コメントについては推奨しているわけではなくて、あくまでも苦肉の策として入れたもの」だそうです。
確かにこれはあくまでIEの特定バージョンのみに対してCSSを修正するもので、次期バージョンのIEが登場したときに結局ここがネックになってしまい、さらなる修正を必要とするでしょう。CSSのコンポーネント化が普及しつつある現状からすると、メンテナンス性も悪そうです(HTML自体の修正が要るからね)。
今後のブラウザは標準準拠が進んでくるはずですから、まずは古いブラウザへのCSSを書いた上で、IE7を含むモダンブラウザだけが解釈できるようにCSSを書いて(例を挙げると:first-childや隣接クラスとか)プロパティを上書きする、という手法での対処が良さそうです。