- - PR -
CSSのIE6バグ??について
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2007-01-14 03:59
このカテゴリで合っているかわからないですが書き込みさせて頂きます。
現在cssで margin-right:auto; margin-left:auto; を使ってページ全体を中央表示させています。 新しいコンテンツ制作にあたり、xmlをxslでコーテングしてphpで結びつけたページを製作したのですが、他のページと同じようにCSSを呼び出しているにも関わらずie6だけ中央表示が反映されず 左寄せになってしまいます。ネットスケープとfirefoxでは中央表示されているのですが・・・。 これは一体どういうことでしょうか? 対策をお教えいただけないでしょうか 補足 他のページは、ie6でも中央表示されていますが xml+xslのページだけ左寄せになってしまいます。 [ メッセージ編集済み 編集者: ぴた 編集日時 2007-01-14 04:01 ] [ メッセージ編集済み 編集者: ぴた 編集日時 2007-01-14 04:09 ] | ||||
|
投稿日時: 2007-01-14 04:45
text-align:center;
で回避することができました。原因はわからないのですが・・・・。 | ||||
|
投稿日時: 2007-01-14 11:39
IE6 までの CSS 解釈の違いです。 言ってみれば、不具合みたいなものですね。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||
|
投稿日時: 2007-01-14 14:08
じゃんぬさんの回答ですべてですが、もう少し詳細の部分を補足すると、
IE6には過去のIEの互換性のため、DOCTYPEの有無により、標準準拠モードと互換モードを切り替えています(いわゆるDOCTYPEスイッチ)。 #正確にはURIの有無も条件に加わるけど IE6の互換モードでは、cssでのmargin:autoをサポートしていません。そのため中央寄せになりません。 また、本来テキスト要素に対し適用するtext-alignがブロック要素に適用できてしまうバグがあります(これが、じゃんぬさんのいう解釈の違いかな)。 また、IE6の標準モードではmrgin:autoによる中央寄せをサポートしています。 これをふまえて。
他のページをどのように記述したか確かではないですが、おそらくHTML 4.01の標準モードで記述、すなわちDOCTYPEありで記述したのでしょう。それゆえ、中央表示されたのだと思われます。 一方、xml+xslを通したページはXHTMLで記述したのではないでしょうか? もしそうなら、XHTMLはXMLで記述されたボキャブラリの一つであるので、先頭にXML宣言を記述する必要があります。このXML宣言のため、先頭にDOCTYPEが記述されなくなり、結果、IE6は互換モードとして描画を試みます。互換モードはmargin:autoを未サポートであるため、中央寄せにならなかったのでしょう。 #過去の互換性のためXHTML 1.0の仕様で、XML宣言なしを認めてたっけ? #まぁ、XML宣言を省略するとValidなXHTMLにはならなくなるけどね。 ちなみに、もう意識する必要はないと思われるけど、IE5(Win), IE5.5(Win), IE5.2(Mac)、ネスケ4もmargin:autoが未サポートらしいです。(CS Zen Garden Bookより) [ メッセージ編集済み 編集者: かずくん 編集日時 2007-01-14 14:14 ] |
1