もうIE6は過去の遺物…と思っていたのですが、
役所などはまだ使っているようで驚きました。
サポート切れてるのに…。
出先で簡単に確認できるよう、まとめておきます。
IE6だけに適用
1 2 3 4 5 6 7 8 | * html{ } /* 例 */ * html #brand_list { width : 205px ; } |
IE6、IE7だけに適用する要素は、
連続して指定するとおかしくなることがあるので、
1つずつ記述した方が無難です。(特にIE6の指定)
ついでにIE7・IE8だけの書き方も。
IE7だけに適用
1 2 3 | *:first-child+html { } |
IE8だけに適用
1 2 3 4 5 | html> /**/ body #fragment -1 p.note { line-height /*\**/ : 120% 9 ; font-size : 10px 9 ; letter-spacing : 0px 9 ; } |
マージンが2倍になってしまうバグ
IEはフロートのマージンが2倍になるため、
幅が想定を超え、落下する。
このため、フロート要素には必ず以下を記述すること。
display: inline;
overflow: hidden;
dd要素もdisplay: inline;する必要がある。
背景色が出ない時
height:1%;を設定すると直ることがある。
IE6でmargin-bottomが極端に増えるとき
height: 1%;を指定すると直ることが多い。
背景画像がIE6・7では、1pxずれる
背景画像の縦・横の長さが奇数の時に起こる。
偶数値にすると直ることがある。
padding-left:1px; とすることで修正されるが
なるべく偶数値で対応すること。
IE6でのmin-heightの対応
IE6では、min-heightが使えないが、以下の方法で可能になる
1 2 3 4 | min-height : 58px ; /* IE6 hack */ height : auto !important ; height : 58px ; |
height: auto∼を先に書くことで、次の行の設定が適用されるようになる
IE8をIE7モードで動かす
1 | < meta http-equiv = "X-UA-Compatible" content = "IE=EmulateIE7" > |
z-indexの扱い方
IEとFireFoxでは、z-indexの扱い方が異なる。
IEではdiv要素が並んでいると勝手に最後の要素を上に配置する。
例)最初にメニューバーがあり、その下にアニメーション要素を置いた場合。
メニューがドロップダウンする形式だと、IEではアニメーション要素の下に
隠れて見えない。
・回避策① 要素全体にz-indexで順序を指定する
・回避策② 下の要素がFLASHの場合は、下記のパラメータを追加する必要がある。
1 | < param name = "wmode" value = "transparent" > |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | <!--[if IE]> IE のみ <![endif]--> <!--[if ! IE]>--> IE 以外のブラウザ <!--<![endif]--> <!--[if !IE 6 ]> <p>この表示はIE6以外で見えます。</p> <![endif]--> <!--[if gt IE 5 ]> <p>この表示はIE5より上のバージョンで見えます。</p> <![endif]--> <!--[if lte IE 6 ]> <p>この表示はIE6以下で見えます。</p> <![endif]--> |
線が表示されない
・position: relative;を指定する
・TR要素に指定している場合、IE6と7は、無効になる場合がある。
内部のTHやTDに、個別に指定する必要がある。
厳密なデザインを行う場合は、表を使わない。DIVとリストの方が緻密。
IEで指定どおりのfont-sizeにならない
11px以下のフォントが指定より大きくなる現象。
font-family で最初に日本語フォントを指定することで解決する。
↓
font-family: ‘MS Pゴシック’, sans-serif;
IEで要素内をインデント処理した時、インライン要素のすべてに適用される
ボックス内にPタグで説明文を記述し、単語の一部をspanタグで囲んで
何らかの強調表示を行うような場合、要素内のPにインデント処理を施すと、
内部のspanタグにインデントがかかる。
→ spanタグのインデントを0にすることで解決
IEでH要素の上部がかけたように表示される
→ line-heightを指定(100%より大きく)することで解決
フロート内の要素が複製されて表示される
その要素に以下を設定
_margin-right: -3px;
もしくは
/margin-right: -3px;
それでもダメなら、
_display: inline;
_overflow: hidden;
まとめていると、つくづく腹が立ってきます。
生産性の低いブラウザです。
コメント