• ベストアンサー

CSSでの中央寄せにかんする疑問

.main { margin:0 auto; width:1000px; } とCSSファイルに記述することにより中央よせをしようとしています。 IE8以外のブラウザでは中央に寄るのですが、IE8では実現しません。 実はこのCSSの記述は私が以前作成したサイトからコピーしていて、そのサイトではすべてのブラウザで中央に寄っています。 今回作成したサイトではこのようなトラブルに陥りました。 で、苦し紛れでDOCTYPE宣言を <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> から <!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> に変更したらIE8でも中央に寄りました。 なぜ、このようなことになったのでしょうか? 教えてください。 よろしくお願いします。(Apacheのバージョンとかがかかわっている?)

質問者が選んだベストアンサー

  • ベストアンサー
  • aegills
  • ベストアンサー率70% (7/10)
回答No.3

単純にIE8のレタリング方法が変わっただけです。 IE8には3つのレタリング方法があります。 * IE8 標準モード:CSS2.1の勧告に沿ったもの。 * 互換モード  :IE6以前のモード * IE7 標準モード:IE7のモード DOCTYPEがXTHML1.0だとIE8モードになるので中央寄せが適用されたわけですね。 ちなみに、DOCTYPEを変更せずとも、meta属性でモード指定できます。 詳細は参考URLをご覧ください。

参考URL:
http://msdn.microsoft.com/ja-jp/library/cc288325%28VS.85%29.aspx,http://msdn.microsoft.com/ja-jp/library/cc817574.aspx

その他の回答 (3)

  • aegills
  • ベストアンサー率70% (7/10)
回答No.4

#3です。 Apacheの件に触れていませんでしたので、追記します。 モードの指定はサーバサイドでも可能ですので、 サーバが違うと動作が異なるかも知れません。 詳細は#3の参照URLにありますので、ご確認ください。

  • abril
  • ベストアンサー率69% (388/560)
回答No.2

【質問番号:5236396】で回答させて頂いた者です。 > なぜ、このようなことになったのでしょうか?教えてください。 えーと…あちらの回答で参考としてあげたコンテンツ順を追って読んで行けば、理解できる筈なんですが。一通り読んでいただけましたでしょうか?だとしたら、どこがどの様にわからなかったのでしょう? > (Apacheのバージョンとかがかかわっている?) 無関係です。UAの問題ですから。 それから、確かにあちらの回答で「DOCTYPEを変えられる様なら、(IE8が標準準拠モードで挙動するものに)変えてしまった方が良いでしょう。」とは言いましたが、 > で、苦し紛れでDOCTYPE宣言を > <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> > から > <!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "​http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">​ > に変更したらIE8でも中央に寄りました。 「苦し紛れ」でただ単にDOCTYPE宣言を変えただけではダメです。まして、上記のケースだとHTMLからXHTMLに変更していますから、文法が変わってくる為、HTMLの他の部分の記述の変更も余儀なくされます。 例えば、XHTMLでは「空要素(閉じタグのないタグ)は閉じていなければならない」というルールがありますから、<br>/<hr>/<img>/<meta>/<input>などは、<br />といった記述に変更しなければならなくなります。 また、こういった表面上の記述変更だけではなく、それぞれのDOCTYPE宣言毎に「推奨・非推奨・廃止」のタグが異なります。 そういった事も含めて全て変更対応が可能な状況ですか?今からサイトを作り始めた状態なら可能だとは思いますが、例えば既存のサイトのメンテナンスだったり、システムで自動生成されているものだったりすると、事情によりソースの細部まで変えたくても変えられない場合もあるかと思いますので。

  • salonpath
  • ベストアンサー率48% (194/399)
回答No.1

DOCTYPE宣言の記述によって、過去のブラウザのレンダリングを行うモード ( 後方互換モード ) と、w3cの仕様に基づいたレンダリングを行うモード ( 標準準拠モード ) を切り替えることができるDOCTYPEスイッチというものがあります。 以下のサイトで詳しくまとめられています http://w3g.jp/others/data/doctype_switching

関連するQ&A

専門家に質問してみよう