プログラム

【CSS】CSSテクニック IE6対策その①

picxpic

コーディングでハマる罠っていうのは大体同じようなことだと思います。

まぁ95%以上の確率で、コーディング時の問題はIE6、IE7、IE8で起こると思います。

今回はコーダー最大の敵、というかコーダーおよびJavascriptプログラマー曰く「ほんと消えてなくなってほしい」代表のIE6くんの基本的な対策を紹介します。

●loat要素のmargin2倍問題
IE6ではfloatを指定した要素にmarginも指定すると、そのmarginの値は2倍で表示されます。これを防ぐにはdisplay:inline;を指定する
[css]
.sample{
float:left;
margin-top:100px;
display:inline;
}
[/css]

●min-height問題
IE6はmin-heightが反映されません。しかし、IE6は要素の大きさが親要素よりも大きいと自動で親要素も大きくしてしまうので、単純にheightだけを指定すればOK。
[css]
.sample{
min-height:500px;
height:500px; //heightの前に半角スペースがあるので、IE6だけに反映される
}
[/css]

●position:relative問題
IE6ではposition:relativeをそのまま指定するとダメ。どうだめになるのかは未検証ですが、zoom:1;を追加するようにしましょう。
[css]
.sample{
position:relative;
zoom:1;
}
[/css]

●ネガティブマージン問題
marginをマイナスで指定すると、要素が逆方向に移動しますが、IE6ではposition:relative; zoom:1を追加します。
[css]
.sample{
margin-top:-50px;
position:relative;
zoom:1;
}
[/css]

●overfllow:hidden問題
overfllow:hiddenにはzoom:1;を追加します。
[css]
.sample{
overfllow:hidden;
zoom:1;
}
[/css]

とりあえず基本としてはこんなところだと思います。

IE6、IE7、IE8に関しては、困ったら「zoom:1;を追加」で問題が解決することが多いと思います。

IE6などはズレても修正が簡単ですが、まれに、ごくごーくまれにFirefoxだけ、とかsafariだけちょっとズレた、なんてときは結構大変ですよね。本当にまれですけれども。

記事URLをコピーしました