IE8 がリリースされたら、次のコードで条件付きスタイルシートを追加できますか?
<!--[if IE 8]>
<link rel="stylesheet" type="text/css" href="ie-8.0.css" />
<![endif]-->
これがベータ版で機能するかどうかについて、矛盾するレポートを読みました。誰かが自分の経験を共有できることを願っています。ありがとう。
IE8 がリリースされたら、次のコードで条件付きスタイルシートを追加できますか?
<!--[if IE 8]>
<link rel="stylesheet" type="text/css" href="ie-8.0.css" />
<![endif]-->
これがベータ版で機能するかどうかについて、矛盾するレポートを読みました。誰かが自分の経験を共有できることを願っています。ありがとう。
注意すべき1つのこと:
それは機能しますが、ページ/サイトのローカルネットワーク(イントラネットなど)をロードしている場合は、デフォルトでIE7モードでロードされます!(update --localhost [*]は特殊なケースであり、標準モードでレンダリングされます)
これは、デフォルトで標準化するというMSFTの当初の声明に反します。
例えば
http://127.0.0.1/mysite/mypage.php <-- IE8 by default (updated!)
http://localhost/mysite/mypage.php <-- IE8 by default (updated!)
http://machinename/mysite/mypage.php <-- IE7 by default
http://192.168.100.x/mysite/mypage.php <-- IE7 by default
http://google.com/ <-- IE8 by default
[*] --Scott Dickens [MSFT]は、IEブログのコメントで、ローカルホストはイントラネットの特別なシナリオ(インターネットサイトの開発によく使用される)であるため、デフォルトで標準モードでレンダリングされると述べています。
IE8のページが実際にレンダリングされているモードをテストするには、開発者ツールを確認するか、このブックマークレットコードを使用できます(IE8でのみ機能します)。
javascript:
var vMode=document.documentMode;
var rMode='IE5 Quirks Mode';
if(vMode==8){
rMode='IE8 Standards Mode';
} else if(vMode==7){
rMode='IE7 Strict Mode';
}
alert('Rendering in: '+rMode);
quirks モードと標準準拠モードの両方で、うまくいきました。ただし、IE8 互換モードに切り替えると機能しません。
ツール/互換表示設定
それらをすべてオフにします
IE8は、IE7と比較して非常に優れたレンダリングを行います。私は、IE6、IE7、およびIE8のスタイルシートを持っています。最初は、少し実験した後、条件付きコメントがIE8で機能していないと思いました。祖先または親クラスを最初に配置する必要があるという理由だけで、いくつかのルールがIE8によって適用されていないことがわかりました。たとえば、次のようなクラスがありました。
.niceclass {some:properties;more:properties;}
それは私がそれを次のようなものに変更した場合にのみ機能しました:
.parentclass .niceclass {some:properties;more:properties;}
また
#parentselector .niceclass {some:properties;more:properties;}
ところで、IE8のみのcssでは、オーバーライドルールは1つしかなく、残りはFirefoxのようにレンダリングされますが、それでもFFを離れることはできません。
私の場合は、css を使用して丸みを帯びた境界線を使用したいと考えていました。Vista 上の IE8 はそのようなものをサポートしていません。また、丸みを帯びた境界線に丸みを帯びた影も表示されるようにグラフィックが設定されていたため、IE8 ではページがひどく見えました。
条件付きコメントを使用してみましたが、IE8 は if IE 式を評価しないため、外部スタイルシートが含まれません。
次に、それを互換性/互換性モードにすることを検討しましたが、使用した CSS ハックが IE8 では機能しなくなったため、これでも機能しませんでした。
最後になりましたが、互換モードのときにページを正しくレンダリングする有効な CSS ハックを見つけました。
* + html #test[id] { color:lime }
これが IE7 以下で機能するかどうかはわかりません。したがって、サポートしたい IE リリースごとに少なくとも 3 つの異なるハックが必要になります。
* + html #test,
html+body #test,
* html body #test
{ color:lime }
Internet Exploiter の次のリグレッションは、私たちにどのような影響を与えるのだろうか。
わざわざ IE8 用に別のスタイルシートを作成する必要があるでしょうか。
すでに IE7 用にデバッグしている場合は、IE8 を強制的に互換モードにして、IE8 が IE7 であるかのようにコードを表示できます。
あなたがしなければならないのは、これを開始ヘッドタグの真下に置くことだけです. それ以外の場所では機能しません。
そして、プロジェクトあたりの平均作業時間は 30 分程度で済み、IE8 の集中的なデバッグは必要ありません!
Msn.com でさえこれを行っています - ちょっと皮肉ですね。
最近、それについてのブログ投稿を書きました: http://blog.sankhomallik.com/2009/11/16/stop-wasting-time-debugging-on-ie8-when-you-dont-have-to-or-get- ie8-to-behave-like-ie7/
ご協力ありがとうございました。私は解決策を発見しました。どうやら問題は、各スタイルシートに独自のタイトル属性を使用させることでした。メインのスタイル シート以外のすべてのタイトルを削除したら、問題はありません。
これは IE8 に固有の奇妙な問題です。そのように動作するはずだと言われましたが、「スタイルシートの設定」に関係しています。解決策ではタイトルを削除する必要があるため、問題が発生するだけです。スクリプト作成時など - スタイルシートを呼び出す必要があるとき。
いずれにせよ、これがバグなのか、そうあるべきなのかはわかりませんが、マイクロソフトがさらに調査してくれることを願っています。
ありがとう