自作CSSで「FirefoxとIEの表示の違い」に苦しむ


このブログ 「DigDag」のCSSは自分で書いたんだけど、
普段僕が使っているブラウザはFirefox


友達のPCとか会社のPCのブラウザはIEの6と7。
このブログをIEで表示するとレイアウトが崩れたり背景画像が表示されていなかったり・・・。
「一体なぜ?」


というわけでFirefoxでもIEでもキチンと表示されるように、
このブログのCSSも改善しなくては。


それにはまず、FirefoxとIEでどのような違いがあるか確認しなくっちゃ



Firefox と IEでの表示の違い


まずは検索して参考になりそうなサイトを探しました。
僕と同じように悩んでいる人はたくさんいるらしくて、参考になるページはたくさんありました。


色々と検索していくとレイアウトの崩れる原因のひとつが解ってきた。
それは、FirefoxとIEではCSSのwidth、heightプロパティの認識の違いです。
下の図をご覧下さい。



通常CSSでレイアウトするとき「ボックス」を構成していき、2カラムや3カラム、ヘッダーやフッターを作っていくわけですが、width(幅)を決めてレイアウトしていきます。
widthを決定したものに対して、marginpaddingborderなどを指定してボックスが構成されます。


例えばつぎの条件でCSSを書いたとします。


  • widthは500px

  • paddingは上下左右に10px

  • borderは上下左右に1px


この時Firefoxでのボックスの認識は、
width「500px」padding「10px」border「1px」となり、「合計511px」のボックスが生成されます。
(注:marginはボックスには含まれません。)


つまり上の表で言うと、width500pxは「コンテンツ」の部分に反映されます。


それに対してIEでは、width500pxは、padding「10px」、border「1px」を含めて「500px」として構成してしまいます。


つまりIEでのコンテンツの幅は「489px」になってしまうという事です。
これがFirefoxとIEでレイアウトが崩れる原因のひとつですが、どうやらコレだけではないようです。
色んなページを見ていると「IEの表示が正しくて、Firefoxの表示が崩れる」という書き方のページが多く見られますが、「ウェブ標準」という考え方でいくと全くの逆。
IEの方が厄介だという事がわかってきます。


IEを使っている人が多数ですからこういう誤解が生まれるのでしょうが、僕にとっても厄介なのはIEです。
以下はそのことについてまとめていきます。



DOCTYPE スイッチ「DTD」による表示モードの切り替え


FirefoxやIE、Opera、Safariのようなホームページを閲覧するアプリケーションを「ブラウザ」といいますが、
そのブラウザには「表示モード」というものがあるのはご存知ですか?
この表示モードは大まかに2種類あり、「標準準拠モード」「後方(過去)互換モード」と呼ばれています。

「標準準拠モード」

W3Cが推奨する、いわゆる世界標準の表示モード。
つまりこれから先、世界標準の標準準拠モードでサイト作ってれば問題なしになるはず。

「後方(過去)互換モード」

後方(過去)互換とは、IE6以下に互換性を持たせるモード。
IE6以下の標準準拠モードに対応していない古いブラウザでの表示を考えたモード。


この2つの表示モードをどちらか一方に絞ってページを作成していけば同じように表示されていくはずです。
この表示モードの切り替えは「DOCTYPE スイッチ」「DTD」によって宣言するわけです。


この「DTD」についてはまた詳しく特集していきますが、ここでも厄介なのがIE
IEでは「標準準拠モード」を宣言しても「後方互換モード」を採用してしまうというバグ(エラー)があります。
それもまた表示が崩れる原因のひとつになっています。


今回参考にしたページ

CSSレイアウト実践講座

IEとFirefoxの表示の差

IEとFirefoxの表示の差・再び

各表示モードによる CSS 解釈の違いをまとめたドキュメントを共有

DOCTYPE スイッチと表示の差

DOCTYPE宣言による表示の違いについて

ボックス要素

クロスブラウザ、5つの掟

ボックスモデルとは?

CSSレイアウトの定石 WinIE6バグ回避法

webブラウザの動作モードは、W3CによるCSSの仕様に従う標準準拠モードと、古いブラウザの挙動に合わせる過去互換モードの2種類に大別されます。
ただし、過去互換モードでは、webブラウザにとって挙動が異なるため特に理由がない限り標準準拠モードでダウささせたほうがいいでしょう。


なお、Windows版IE6はDOCTYPE宣言の位置が重要で、これが文書の先頭にないと過去互換モードになってしまいます。
したがって標準準拠モードにするためには、XML宣言を記述することができません。CSSの仕様とは反しますが、ドキュメントの文字コードがUTF-8の場合、XML宣言がなくても不具合がないためIEで標準準拠モードで動作させるためには現状ではXML宣言を省力する必要があります。
なおIE7ではそのバグは修正され、先頭にXML宣言を記述しても標準モードで動作させることが出来ます。



次の記事では「DTD」についてもう少し探っていきます。
「FirefoxとIEの表示の違いをどう解決するか? 」






  1. posted:2007/09/30:Sun
  2. 12 : 21: 29
  3. ブラウザ
  4. Firefox 悩み IE CSS

  5. RSS
  6. comments : 0
  7. trackbacks : 0
  8. edit

Comments

What say you?


管理者にだけ表示を許可する

Track backs

http://digdagdig.blog117.fc2.com/tb.php/82-cb2e68c2

この記事にトラックバックする(FC2ブログユーザー)

Archives

全ての記事を表示する

全ての記事を表示する

Recent comments

Recent trackbacks

ブロとも申請フォーム

この人とブロともになる

Category

Recent posts

Search this site:

Tag Clouds


Powered By FC2

Powered By FC2ブログ
ブログやるならFC2ブログ


  FC2ブログ 紹介予定派遣