IE6~11のCSSにおいて

  • IE6でだけプロパティ名の前にアンダースコアがあっても同一視される
  • IE6と7でだけプロパティ名の前にアスタリスクがあっても同一視される
  • IE6〜10で、値の最後に\9を付けても値に影響しない
  • IE6〜8で、:not(:target){ ~ }が解釈されない
  • IE6〜9で、@media all and (-ms-high-contrast: none) { ~ } が解釈されない を組み合わせることでブラウザのバージョンによってCSSを変える
  • IEのバージョン毎のハックを試してみる | cly7796.net css
.sample {
    background: #000000;
    background: #888888\9;
    *background: #777777;
    _background: #666666;
}
.sample:not(:target) {
  background: #999999\9;
}
@media all and (-ms-high-contrast: none) {
    .sample:not(:target) {
        background: #bbbbbb;
        background: #aaaaaa\9;
    }
}
  • これで6〜11のそれぞれで振る舞いを変えられるはずだが古いIEで検証するのが面倒なので確認はしてない