2003/06/18 (水)  (無題)
★ガ━━(゚Д゚;)━━━ン!!!!!
ここ数年書いてきたHTMLだとIE6に対応できてない!!

ほら、例のIE6テーブルセンタリング事件ですよ。
ふり的には、「Mozilla使ってるから関係ないさふふん」とか余裕かましてましたが、今日やっと気づきました。
ご丁寧にdtdの在処を示していたことが裏目に出ていたことに

(; ´Д⊂ヽ

今までは、こう書いてたんですよ。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/REC-html40/loose.dtd">
<html lang="ja">
<head>


この場合、IE6では標準モード(Strict)して認識するようです。
つまり、Transitionalって書いてあるにもかかわらず、Transitionalと判断してくれない・・(?)らしい。
じゃあどうするかっていうと、

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html lang="ja">
<head>


違いはDOCTYPE宣言のとこだけですけどね。
こうすると、Transitionalと判断するためか、IE5.5と同様な表示となり、センタリングも普通です。
これは後方互換モードというそうです。

ただし、IE5.5まではバグとして、
・table要素が、親要素のalign属性を継承していない
・table要素の親要素に中央揃えの指定がある場合、ブロック要素であるtable要素自体が中央揃えになってしまう。

#だんだんややこしくなって参りました。

例を挙げると、
<div align="center">
 <table width="100%">
  <tr>
   <td>aaa</td>
  </tr>
 </table>
</div>

こうしたとき、標準モードでは、セル内の文字もセンタリングされます。が、テーブル自体はセンタリングされません。左に寄ったままです。
後方互換モードでは、セル内の文字は左寄せになります。そして、テーブルはセンタリングされます。

結局面倒なのは、後方互換モードって、結局HTMLの解釈が間違ってるわけなので、これまでの常識(*1)は間違っていたと、そういうことなわけです。
*1 align="center"でテーブルをセンタリングできることと、そのテーブルのセルは左寄せがあたりまえだと思っていたこと

ちなみに、margin-right:auto; margin-left:auto、そしてtext-align: center;を指定してあげれば、センタリングになるそうです。


★コメント
コメントはありません。


※1ヶ月より前の日記にはコメントができません。



トップページに戻る