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
- by rosso
- at 23:40


comments