プロが教える店舗&オフィスのセキュリティ対策術

IE6ブラウザへの対応で行き詰ってしまったので、ご意見をお聞かせください。


以下htmlの一部
<html>
<head>
<title></title>
</head>
<body>
<div id="hoge">
中央に表示されます。
</div>
</body>


以下スタイルシートの一部
body {
background:url("./background1.gif") no-repeat scroll left top;
}

#hoge {
background:url("./background2.gif") no-repeat scroll left top;
margin-left:auto;
margin-right:auto;
}


<body>と<div>にそれぞれ、絵柄は同じだけど色が違う背景画像を設定しています。
目的は、ブラウザの横幅を広げた時に背景がずれないようにするためです。
FireFox3.6、IE7、IE8、GoogleChlomeでは目的の動きを取ることを確認できたのですが、IE6ではそうなりません。
IE6では、<div>に設定した背景画像の開始位置が、<div>の範囲(開始位置)になっているのです。
<body>のように、ブラウザの開始位置に配置したいときはどのようにしたらいいのでしょうか?

cssハックを使って、IE6だけpositionでずらすという方法も試したのですが、
それだと背景にずれが生じてしまうため、あきらめました。
他にも何か良い方法がありましたら、お聞かせいただけると助かります。
宜しくお願い致します。

A 回答 (3件)

bodyにはmarginが最初から設定されているから、ブラウザによって勝手に余白が入ってずれることがあります。



cssに margin:0 auto を足してbackground-positionを同じにしてちょっと書き換えれば解決するはずです。
background-position: center top; も入れたほうが良いかも。
ただし、bodyとdivは共にブラウザでセンタリング表示であると仮定した場合です。

(cssここから)
body {
background:url("./background1.gif");
background-position: center top;
margin:0 auto;
text-align:center;
}
#hoge {
background:url("./background2.gif");
background-position: center top;
margin:0 auto;
text-align:center;
width:300px; /* たとえば */
}
(cssここまで)

※margin:0 auto; という表記は、

margin-left:auto;
margin-right:auto;
margin-top: 0;
margin-bottom:0;

を1行で書いたものです

この回答への補足

ご回答ありがとうございます。

教えていただいた内容を使い、さらには背景をセンター表示にさせるために少し調整したら、
ブラウザの横幅を広げた時に期待する動作を得ることができました!!
ただ、一つ困ったことがあるのですが、画面に合わせてdivに設定した背景が縦位置のスクロールをしてしまうのです。
IE7、8、FireFox3.6、GoogleChlomeでは動かないのですが。。。
先の例には記述していないのですが、

background-attachment: fixed;

の指定は行っています。
何が問題なのでしょうか…?

補足日時:2010/10/04 10:29
    • good
    • 0

NO.2 最後のところを訂正



whidth → width
    • good
    • 0

サイドの背景を暗い画像に。

昨日の続きですが・・・
----------------
IE6で崩れるって事は、DTDスイッチで過去モードの可能性あり・・・

更に、記述された、CSSだけで、センター配置すらならないし、
Firefox、IE、Chromeでもズレるはず。(CSS部分を省略したのだろうか?)

仮に、widthで幅を設定し、
センター配置にしてbody以下のpadding,marginを0にしたとしても、
backgroundでscroll left topなのだから、
ブラウザ幅を変更したら画像がズレるはず。
left topだから、背景はdivの開始位置から始まるのがルール。
だからdivが動けば画像も一緒にズレる。
-----------------------

他にも方法があるが、
一番簡単な方法は、背景画像とdiv画像をセンター配置に統一すれば画像が一緒に移動。

body { margin:0;padding:0;
background:url(./b1.gif) no-repeat center top;
}
#hoge {
background:url(./b2.gif) no-repeat center top;
margin: 0 auto;
whidth: 600px; /* 幅は適当に */
}
「IE6ブラウザへの対応で行き詰ってしまっ」の回答画像2

この回答への補足

ご回答ありがとうございます。

No1の方に教えていただいた方法で今回は実装することができました。
ありがとうございました。

補足日時:2010/10/04 13:21
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!