- PR -

CSSのIE6バグ??について

1
投稿者投稿内容
ぴた
会議室デビュー日: 2007/01/11
投稿数: 4
投稿日時: 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/11
投稿数: 4
投稿日時: 2007-01-14 04:45
text-align:center;
で回避することができました。原因はわからないのですが・・・・。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2007-01-14 11:39
引用:

ぴたさんの書き込み (2007-01-14 04:45) より:

text-align:center;
で回避することができました。原因はわからないのですが・・・・。


IE6 までの CSS 解釈の違いです。
言ってみれば、不具合みたいなものですね。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
かずくん
ぬし
会議室デビュー日: 2003/01/08
投稿数: 759
お住まい・勤務地: 太陽系第三惑星
投稿日時: 2007-01-14 14:08
じゃんぬさんの回答ですべてですが、もう少し詳細の部分を補足すると、
IE6には過去のIEの互換性のため、DOCTYPEの有無により、標準準拠モードと互換モードを切り替えています(いわゆるDOCTYPEスイッチ)。
#正確にはURIの有無も条件に加わるけど

IE6の互換モードでは、cssでのmargin:autoをサポートしていません。そのため中央寄せになりません。
また、本来テキスト要素に対し適用するtext-alignがブロック要素に適用できてしまうバグがあります(これが、じゃんぬさんのいう解釈の違いかな)。

また、IE6の標準モードではmrgin:autoによる中央寄せをサポートしています。

これをふまえて。
引用:

他のページは、ie6でも中央表示されていますが xml+xslのページだけ左寄せになってしまいます。


他のページをどのように記述したか確かではないですが、おそらく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

スキルアップ/キャリアアップ(JOB@IT)