IE 7以下で背景画像が表示されない場合の対処法
公開:
更新:
IEで変な現象が起きてしまったのでメモ。 こういうページを作ってました。 このページの「タイトル」と書かれている部分ですね。 この部分のHTMLとCSSは以下。 あと、このページにはEric Meyer Reset CSSを少しいじったものを使っています。 何で表示されないのか検索しても分からなかったのでTwitterで書いたところ、@GeckoTangさんが色々と見つけてくださいました。 最終的に、リセット用のCSSに書かれている1行を削除、または変更することで対処できました。 どうも リセットCSSではなく、該当要素部分のCSSを変更して対処する場合です。 の部分になります。 ここのhasLayoutをtrueにしてやると、ちゃんと背景画像が表示されます。 また、 他には となります。
Internet Explorer 7以下で背景画像が表示されなくなるといったもの。
その原因となった部分と対処法。背景が表示されなくなったページ
(実際に作ったページとは画像を変更しています)<div id="main">
<div class="article">
<div class="head">
<h2>タイトル</h2>
</div>
<div class="body">
<p>テキスト。テキスト。テキス...</p>
</div>
</div>
</div>
/* ここが表示されない */
#main .article .head {
background: url(img/mainhead.png) bottom left no-repeat;
}
#main .article .head h2 {
padding: 6px 50px 6px 0;
font-size: 16px;
font-weight: 700;
line-height: 20px;
}
今回重要なのはこの部分。body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, font, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b, u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td {
margin: 0;
padding: 0;
border: 0;
outline: 0;
font-size: 100%;
vertical-align: baseline;
background: transparent;
}
対処法
ほんと、毎回ありがとうございます。原因となった部分
変更箇所は以下。body, div, span, applet... {
margin: 0;
padding: 0;
border: 0;
outline: 0;
font-size: 100%;
vertical-align: baseline;
background: transparent; /* ここを削除 */
}
* { background: transparent; }
と同様のコードがあって、ショートハンドプロパティのbackground
を省略ありで使った場合に背景画像が消えてしまうようです。
これを修正するにはbackground: transparent
を削除するか、background-color: transparent
と指定します。該当要素部分のみ修正する場合
ここでは#main .article .head {
background: url(img/mainhead.png) bottom left no-repeat;
}
具体的にはzoom: 1
を指定してやるとかですね。width
やheight
を指定してもOKです。border
を指定することでも解決します。background
プロパティを省略せず、全部書くことで背景画像が表示されます。
今回の場合は#main .article .head {
background: #fff url(img/mainhead.png) bottom left no-repeat;
}
ただ、transparent
ではダメでした。
どうしてこういうことが起きるのかは分かりませんが、background: transparent
を使う場合には注意が必要ですね。