ホームページ > 記事 > ウェブフロントエンド > ブラウザ解析モード: DOCTYPE 宣言の問題の使用法に関する詳細な説明
Webページ制作cnn6記事紹介: IE8にはIE5.5変モード、IE7標準モード、IE8ほぼ標準モード、IE8標準モードの4つのモードがあります。 |
標準モードのトリガー
1. 次のような DOCTYPE ステートメントを追加します。
< !DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> < !DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> < !DOCTYPE html>
2. X-UA 互換トリガーを設定します。
奇妙なモードをトリガーします
1. doctype 宣言はありません。古い HTML バージョン (3.2 などの HTML4 より下) を定義します。
2. XML 宣言を追加します。ie6 でトリガーできます
4875b6f56f060df33fe8dabbb76aa87e
6696bd7d107ee1b4fe3f02d4fff4771a
3. XML 宣言と XHTML の DOCTYPE の間に HTML コメントを追加します。これは、ie7
f3924a7f7d9f93514645e675a690d295
bfe2946cb5cfdffb9884d7642fb4973e
> 1ce21ff05b6519698cd23502fbc95a8b
IE8 には 4 つのモードがあります: IE5.5 奇妙なモード、IE7 標準モード、IE8 ほぼ標準モード、IE8 標準モード
X-UA 互換設定の IE8 モードへの影響:
1 X-UA 互換を設定します。 meta
IE=5、IE=6 (5.987654321 など、5 から 6 までの任意の数値): IE5 の奇妙なモードをトリガーします (ページに DOCTYPE があるかどうかに関係ありません)
IE=7(75be4ce752bf2b7ae70065694aae4931c または 3f1c4e4b6b16bbbd69b2ee476dc4f83a タグの後に X-UA-互換と記述します: 「X-UA-互換 HTTP ヘッダー」を判断します。
注1: 2cdf5bf648cf2f33323966d7f58a7f3fまたは3f1c4e4b6b16bbbd69b2ee476dc4f83aタグの下にX-UA-Compatibilityと記述されている場合、X-UA-Compatibilityの設定は無効になります。
注 2: ページとサーバーの HTTP ヘッダーが X-UA 互換に設定されている場合は、ページの X-UA 互換設定を使用します。ページが X-UA 互換でない場合は、HTTP ヘッダーで設定された値が使用されます。
注 3: ほぼ標準モードの意味とトリガーについては、以下の「ほぼ標準モード」で説明されています。
注 4: IE=xx の値について、ie は xx を最も近い値に変換しようとします。例: IE=7.789 -> IE=7; 5 と 6 の間 -> IE=5; 8 以上。
注 5: 5 未満の IE=4、IE=3、IE=0.1、IE=-7 には、IE=IE8、IE=IE7、IE=IE6、IE=a、IE=b、IE= が含まれます。 bcd 、X-UA 互換性がない場合と同じ。 X-UA-Compatibility が無効な値に設定されていることがわかるので、ここではスキップします。
2. X-UA 互換の HTTP ヘッダーを設定します
IE=5、IE=6: IE5 の奇妙なモードをトリガーします (ページに DOCTYPE があるかどうかに関係ありません)
IE=7(7<= 値<8):必須の IE7 標準 (ページに DOCTYPE があるかどうかに関係なく)
IE=EmulateIE7: DOCTYPE に従います (DOCTYPE-IE7 標準あり。DOCTYPE-IE5 の奇妙なモードはありません)
IE=EmulateIE8: DOCTYPE に従います (DOCTYPE-IE8 がほぼ標準、またはIE8 標準; DOCTYPE なし -IE5 奇妙なモード)
IE=8、IE=Edge、IE=99、IE=9.9 (8 以上): doctype あり - ほぼ標準モード (または doctype なしの IE8 標準) を使用します。 - IE8標準。
注: X-UA-Practical (メタまたは http ヘッダー) を設定すると、クライアントの互換性ビュー設定は上書きされます。 X-UA 互換
X-UA 互換なし、IE=IE8、IE=IE7、IE=a で設定されたモードの使用を強制 (優先) します。また、上記の注 5 で述べたように、最初に「互換ビュー" "、「互換ビュー」設定があります (doctype-IE7 標準、doctype-IE5 の奇妙なモードはありません)。「互換ビュー」が設定されていない場合、DOCTYPE-Follow doctype があり、doctype-IE5 の奇妙なモードはありません。
IE9 には 7 つのモードがあります: IE5.5 奇妙なモード、IE7 標準モード、IE8 ほぼ標準モード、IE8 標準モード、IE9 ほぼ標準モード、IE9 標準モード、XML モード
IE9 と IE8 は基本的に同じです:
X- UA 互換
IE=(0<= value<7) - 奇妙なモードをトリガーします (ページに DOCTYPE があるかどうかに関係ありません)。 注: ここでの奇妙なモードは、IE8 でのモードとは少し異なります。テストでは、「-」であることがわかりました。および「_」 2 つの CSS ハック記号は両方とも IE8 では認識されますが、「-」は IE9 では認識されません。
IE=7(7IE=8(8IE=EmulateIE7, EmulateIE8 上記の IE8 と同じ
IE=9, IE=Edge (value>=9) - doctype あり - ほぼ標準モード (または IE9 標準) を使用します。 IE8 と同様に、doctype に基づいて IE9 ほぼ標準モード、または IE9 標準モードなし (doctype-IE9 標準) を選択します。
IE=(value
X-UA互換の特殊な書き方
msdn上面提到了X-UA-Compatible值设置成"IE=9; IE=8; IE=5"这样的,意思就是优先最前面的IE9,没IE9就用IE8,没IE8就IE5,并且并不推荐在生产环境下使用。
触发Google Chrome Frame:3435c5972dd88b33da7181f5cc86ec33
可以和IE的X-UA-Compatible混搭:比如:edeeb43dc591905d5529bb5165ba0baa。这样写的好处:可以让ie在最好的渲染方式下渲染页面。
"IE=edge,chrome=1",可以写成"chrome=1,IE=edge"、"chrome=1; IE=edge"。
几乎标准模式(Almost Standards Mode)
Firefox 1+、Safari、Chrome、Opera(从7.5开始)和IE8/IE9增加了一个"几乎标准模式",它实现传统的表格单元格的垂直尺寸(没有严格的遵照CSS2规范)。
意思就是,比如下面的代码:
<table style="border:1px solid blue;" cellspacing="0"> < tr><td><img style="border:1px solid red" width="364" height="126" src="http://www.google.com/images/logos/ps_logo2.png"/></td></tr> < /table>
比如在IE7标准模式下,图片底部和table是没空白的;"几乎标准模式"下,图片底部和table也是没空白的;而较新的浏览器在标准模式下图片底部和table会有个空白。
@see:https://developer.mozilla.org/en/Images,_Tables,_and_Mysterious_Gaps
下面的DOCTYPE都可触发IE8标准模式:
< !DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> < !DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> < !DOCTYPE html>
触发IE8几乎标准模式:
c22098bfd3f62d7436149aaab013de1a
3c6ee2e4e556c3badc505155aae90f4f
Mac IE5、IE6/7、Opera(8f6e2fe385d7f17760ce5575dcfc3807)。
任何一个XHTML文档的解析错误会导致停止解析,FF/SF/CH/OP会直接报XML解析错误,IE9可以在开发人员工具的console里面看到报错。
MacIE5、IE6/7/8不支持application/xhtml+xml。
发现IE9下使用此模式,doctype是无所谓的,1d33348365c3ec55b420fe6254061305 这句命名空间必须的,没设置命名空间css会以文本解析而失效。
同时XML模式下,X-UA-Compatible的设置将会无效。
总结:
X-UA-Compatible只有IE>=8才识别,所以他们可以用doctype声明、X-UA-Compatible、兼容性视图设置来改变模式。
IE6/7却依靠DOCTYPE来改变标准或怪异模式,类似这些低版本的浏览器下的标准模式,接近与“先进”浏览器下的几乎标准模式,因为它们都没有严格遵循CSS2规范。并且他们同样在标准模式下,各自的渲染还是是有差别的。没差别就不会有css hack的诞生。
IE6-IE9下,怪异模式都在IE5.5下。
不需要写X-UA-Compatible,用css也完全可以搞定各个版本IE的解析不同。
模式、版本不同,不仅仅css解析不同,js的解析也有不同。
了解浏览器解析模式的不同,可以避免我们辛苦写出的标准代码被怪异所残害。
让开发者更注重遵循标准,无论在生产效率还是在协作、沟通上都有好处滴。
现在几乎人人都用标准的doctype来声明文档,所以纠结标准、怪异模式对工作的影响不太大。
以上がブラウザ解析モード: DOCTYPE 宣言の問題の使用法に関する詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。