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

背景を2枚使用し、それぞれ上と下に固定して、本文がのびると真ん中(画像のない場所)がのびるようにしたいのですが、
Firefoxのみ、下の画像に空白ができて埋まりません。
画像は、bodyに下の画像を、containerに上の画像を入れています。
いい方法はないでしょうか?

----html------------------
<html>
<body>
<div id="container">

</div>
</body>
</html>

---css------------------

body{
background-image:url(../images/back_01.jpg);
background-repeat:repeat-x;
background-position:bottom;
margin:0 auto;
height:100%;
}


div#container {
background-image:url(../images/back_02.jpg);
background-repeat:repeat-x;
width:100%;
height:100%;
margin:0 auto;
text-align:center;


}


ちなみにhtmlにcssでheight:100%などを入力すると、画像が消えて表示されなくなります。

よろしくお願いします。

A 回答 (6件)

記述不足


「本文はどこに記述しますか?」
「Firefoxのみ再現したとのことですが,実験したけど再現しなかったブラウザも明記してください」

#互換モード・標準モードの差異が原因かと思ったけど,
これはOpera 9.60 weekly 10414,IE 8 Beta 2で再現せず,はいいとして
Minefield/3.1a2pre(Firefox Trunk)のみならずSafari 4 Developer Preview(2008-08-22)で再現してしまったから違うんだろうなあ

この回答への補足

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

補足させていただきます。
本文は、mainになります。

<html>
<body>
<div id="container">
<div class="main">
本文
</div>
</div>
</body>
</html>

再現できたブラウザは、
IE6、IE7、opera9、safari3
再現できなかったのは、
IE8、firefox2
です。

よろしくお願いします。

補足日時:2008/09/01 18:24
    • good
    • 0

本文の成り行きで空白が伸びるのなら、上はbody画像の方が適切だと思います。

container、背景のためだけですか?

あと、標準なら、確かbodyとhtmlに別々の背景画像が使えたと思います。

それと、真中に揃えたいのだと思うのですが、margin:0 auto;の使い方が間違っています。下の画像に空白って横方向ですか?それなら幅の指定の話だと思います。margin:0 auto;っていうことは横幅はブラウザにお任せっていうことですよね?任されたブラウザの初期値がFirefoxのみお気に召さないのであれば、指定してやれば済むと思います。autoしたくても横幅の指定もないし……。

この回答への補足

回答ありがとうございます。
htmlに画像を設定する方法も試してみたのですが、表示されなかったのです。なので、containerに画像をいれているのです。
containerは、画像だけしか設定していません。
空白方向は縦方向です。横は、画像をその延々まま引き伸ばす形で、
background-repeat:repeat-x;
で設定していますが、正常に表示しています。

上の画像のcssで、background-position抜けてますが、
上下の画像はそれぞれ、
background-position:bottom;
background-position:top;
で位置を設定しています。
これで、自然と真ん中の画像の無いところがのびるのですが、
下の画像の下に空白が出来る・・・というか、最後まで画像が
表示されないというのかもしれません。

補足日時:2008/09/01 23:00
    • good
    • 0

じゃあ、標準でいいと判断しました。



<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<HTML lang=ja><HEAD><TITLE>test</TITLE>
<STYLE type=text/css>
HTML {
background-image:url(test.jpg);
background-repeat:repeat-x;
background-position:top;
margin:0 auto;
height:100%;
}
BODY {
margin:0;
background-image:url(test.jpg);
background-repeat:repeat-x;
background-position:bottom;
margin:0 auto;
height:100%;
}
p{margin:100px auto;width:80%;}
</STYLE>
</HEAD>
<body>
<P>
本文
</p>
</body>
</html>

この回答への補足

回答ありがとうございます。
うーん・・・上記方法で試してみましたが、IE7、Firefox共にだめでした・・。

htmlに画像を入れるのは、別ページのcssではだめなんでしょうか?

やっぱりデザイン変更をしないとだめなんでしょうかねえ・・・(TT)

補足日時:2008/09/02 14:43
    • good
    • 0

うーーん。

不思議ですね。私のFirefoxでは1も2も3も上と下にちゃんと表示されています。

まさかとは思いますが、部分だけつまみ食い的にコピーしたんじゃないでしょうね?

この回答への補足

回答ありがとうございます!
Σええ!マジですか?
私のFirefoxが悪いんでしょうか?
バージョンは、Firefox/2.0.0.16なんです。
古いからでしょうか?
Firebugが使いたいので、バージョンアップできないのです。

部分的ではないですよ。
画像の名前だけ変えてますが・・・
どうしても、htmlのheightを読んでくれないようです!
htmlにheight:1000pxなど、具体的に数値を入れてやると、
綺麗に表示するのですが・・・

もう一度、頑張ってみます!
ありがとうございました!!!

補足日時:2008/09/02 20:00
    • good
    • 0

Firefox2とFirefox3で、見た目が変わることもあるようですね。


実際の開発で経験しています。

Firefox3でも見た目がどうなるか、試してみてもらいたいですね。
私の環境では、Firefox3でFirebug普通に動いています。
    • good
    • 0
この回答へのお礼

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

FirebugがFirefox3でも使える事を一昨日知りました。
で、Firefox3で試してみましたが・・・

Firefix2と同じ結果で、
下にスペースが空いてました。

ご報告まで。

お礼日時:2008/09/06 10:08

質問者の方に質問です。

わからない言葉をスルーしていませんか?折角教えていただいているのにもったいないと思います。

#1の方の標準モードと互換モードわかっておられます?
#3の方の標準に対してのソースは標準モードの文書宣言をされていますがcssを別ページとコメントされている所から類推すると、html側は互換も混じった宣言で、cssにソースを入れるとダメと言う風にとれるのですがどうでしょう?

標準とはcssのまま、正しい文法解釈をするモード
互換とは古いブラウザに合わせて、一部解釈をわざと間違えて表示するモードです。

当然正しい文法解釈をするモードの方が各ブラウザを統一した表示になりやすいのです。但し、古いブラウザは、とんでもなく崩れたりします。
互換は古いブラウザもある程度救いますが本当の文法と違いますので、今のブラウザで同じ表現にしようとすると骨です。

文書宣言により、互換・厳格・標準を指定するのですが、各ブラウザで解釈が違いますので、宣言により互換と標準のブラウザも調整することが出来ます。<!DOCTYPE ~が今回のソースと質問者のhtmlの<!DOCTYPE と違いませんか?そこ重要です。ぴったり同じ表現をしようとすると必要になってきます。質問者さんのこだわりがあるならあげてもらわないと的確なアドバイスは受けれません。

Firefoxはプロフィールを作成することで、違うバージョンをインストールすることができます。私の環境でも1・2・3で表示できてますよ。ちなみにwinです。
    • good
    • 0
この回答へのお礼

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

なるほど、回答者さんのおっしゃるとうりですね。
そこから、見直す事をしないと駄目ですね。
勉強しなおします。

皆様の丁寧親切な回答を読んで、書いて試してみて、なんとなく原因がわかった事に感謝いたします。

結局、空白部分の高さ分、htmlに
padding-bottom:50px;
を入れると、埋まりました。
他のブラウザにも支障はないようです。

今回は勉強になりました。
ありがとうございます!!

お礼日時:2008/09/03 10:25

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