Firefox IEの表示の違い DTDで表示モードの切り替え


Firefox IEの表示の違いに悩まされている人はたくさんいるようです。
僕もその一人ですが・・・。
ウェブ標準なサイトつくりを目指しXHTMLでページを作り直そうと決心したのはいいが、FirefoxとIEの表示の違いをXHTML+CSSではどう回避すればいいでしょう?。
xml宣言をするとIE6では後方(過去)互換モードが適用されるというバグがあるし、
すべてのブラウザで標準準拠モードが採用されるためにはxml宣言を省略するしかない。
(詳しくは「Firefox IEの表示の違い クロスブラウザ「ブラウザ互換 DTD」とは? 」を参照。)
というわけで、xml宣言なしでページを作ることでひと段落したのだが・・・


xml宣言してIE6だけCSSハックする


「xml宣言」W3Cでも強く推奨されている。
ウェブ標準を目指すならなるべくW3Cの推奨は守っていきたい。
というわけでやはり「xml宣言」はしておきたい。


「xml宣言」をした上で、バグのでるIE6だけCSSハックすることにしました。
散々悩みましたが、コレが一番一般的な方法らしい。
Windows MEあたりではIE6以上は実装できませんし、
まだまだIE6を使っている人はたくさんいます。
IE6は未だに無視できないシェアを持っているブラウザですね。
と、言うわけで「xml宣言」をしたコードは以下のようになります。



XHTML1.1DTD xml宣言あり システム識別子あり


「XHTML1.1」、または「XHTML1.0」では「xml宣言」するとIE6だけ「後方(過去)互換モード」が採用されてしまいます。
そこを踏まえてIE6にだけ「CSSハック」を行います。

<?xml version="1.0" encoding="ECU-JP"?>
<!DOCTYPE html PUBLIC"-//W3C//DTD XHTML1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja">
<head>
<meta http-equiv="Content-Type"
content="text/html;charset=ECU-JP" />



IE6だけCSSハック


IE6を狙った「CSSハック」は色々あるのでそれらを使ってレイアウトの崩れを防ぎます。
では、実際に「標準準拠モード」とIE6の「後方(過去)互換モード」ではどこが違ってレイアウトが崩れるのかをチェックしましょう。


問題はボックスモデルのwidthheightの解釈の違いからレイアウトが崩れます。
まず、「標準準拠モード」でのブロックモデルのwidthheightですが、コンテンツの幅、高さがそのままwidth、heightとなるのに対して、IEの「後方(過去)互換モード」では、padding+border+コンテンツの合計がwidth、heightになってしまいます。


ボックスモデル、互換モードと標準モードの解釈の違い

上記のようにボックスモデルの解釈が変わってくるのでIE6のCSSハックで、
widthまたはheightを標準モードよりborder+paddingの分だけ大きくすればレイアウトが崩れませんね。



「ボックスモデル」については、
『Firefox IE の表示の違いをまとめてみる 』を参照して下さい。



次の記事で今までの記事を一度まとめてみたいと思います。
『Firefox IE 表示の違い 「クロスブラウザ」まとめ 』






  1. posted:2007/10/23:Tue
  2. 22 : 14: 40
  3. ブラウザ
  4. CSS Firefox IE XHTML

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

Comments

What say you?


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

Track backs

http://digdagdig.blog117.fc2.com/tb.php/125-b50a5d11

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

Archives

全ての記事を表示する

全ての記事を表示する

Recent comments

Recent trackbacks

ブロとも申請フォーム

この人とブロともになる

Category

Recent posts

Search this site:

Tag Clouds


Powered By FC2

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


  FC2ブログ 紹介予定派遣