2007年06月14日

Mid Pass Filterか、非XML宣言か

XHTMLのページデザインで、各ブラウザでの表示の違いをどうするかという事。

W3Cでは、XHTML文書の仕様でDOCTYPE宣言の前にXML宣言をする事を強く推奨されていて、 XMLバージョンの宣言が必須で、キャラクタエンコードは、UTF-8(またはUTF-16)以外の場合は必須であると定義されている。

ところが、IE6.0ではXML宣言がある場合ページの表示が「互換モード」(互換というよりもIE独自な気もしますが。。。) というものになって、表示がおかしくなってしまう。また、 さらに古いブラウザになるとXML宣言自身がページに表示されてしまうという問題もある。

よくあるのがスタイルシートに[ width | height ]と[ padding | border ]した場合にある。

IE6.0(互換モード)の場合
width,height,paddingを同時に指定してもオブジェクトの横幅(縦幅)は、width,heightの指定通りになる。

IE7.0、FireFoxの場合
オブジェクトの内容の部分に横幅(縦幅)の指定が利き、オブジェクト全体の横幅(縦幅)はwidth+paddingとなる。

そこで、このようなレンダリングの違いによるデザインの補正として「XML宣言しない」とか、「CSSハック」 を使用するといったテクニックが必要になる。

企業サイトなどでは、 jsでUAの違いごとにスタイルシートを振り分けてブラウザごとに最適化されたCSSを読み込ませるといった手法をよく見かける。

また、その他によくある方法としては、DIVにwidth,heightを指定し、その中のPでpaddingを指定するというもの。 width(height)とpaddingが同時に指定されていなければOKというもの。

またIE6以前の古いブラウザなどに関しては、Mid Pass FilterなんかのCSS実装のバグを利用したCSSハックでスタイルシートの指定を分けるといった方法がある。

  • 外部スタイルシートを読み込む<link>に「media="screen,print"」 と指定するとNN4.xは読み込まない。
    「media="screen"」でないとNN4.xは読み込めない。
  • IE4.0では、外部スタイルシートの「@import "?.css"」形式のインポートCSSを読み込めない。
  • IE5.0,5.5だけが読み込めるMid Pass Filterという裏技。
  • MacIEでは、「\*/」をコメントの終了として認識しない(認識できない)。
    「/* ?? \*/  (ここの部分のCSSはMacIEでは読み込まない)  /* */」

なんだか、探り出すとまだまだありそうだし、ブラウザの更新で、対応されてしまったり。 いろいろと面倒くさそうですが、まとめてきちんと整理しておこうと思う。

 

じゃあの。

赤いアクセサリでドレスアップ | ケース & バッグ | オーディオ & スピーカー | ワイヤレス

今回の参考サイト
Hato-Style - Note - XHTMLでxml宣言を付けるか付けないか問題
http://hato-style.chu.jp/note/note_20070314.html

trackbacks

trackbackURL:

comments

comment form

(SEO アクセスアップ ウェブのしあわせ にはじめてコメントされる場合、不適切なコメントを防止するため、掲載前に管理者が内容を確認しています。適切なコメントと判断した場合コメントは直ちに表示されますので、再度コメントを投稿する必要はありません。)

comment form
Apple Store(Japan)