こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

CSSでDIVで挟んでいるのに背景色が出ない?

CSSと(X)HTMLでページを作っています。角丸なページにしたいため、

/* ---------- 角丸画像の上辺 ---------- */
#main_contents_header {
width: 800px;
height:20px;
background:url(./top.png) no-repeat top;
margin: 10px auto 0px;
padding: 0;
text-align: center;
}

/* ---------- 上辺と下辺の間のメイン部分 ---------- */
#main_contents {
background:url(./bg.png);
width: 800px;
margin: 0 auto;
padding: 0;
text-align: center;
}

/* ---------- 角丸画像の下辺 ---------- */
#main_contents_bottom {
width: 800px;
height:20px;
background:url(./bottom.png) no-repeat top;
margin: 0 auto;
padding: 0;
text-align: center;
}

というCSSを作り、

HTMLは

<div id="main_contents_top"></div>
<div id="main_contents">
ここにいろいろなコンテンツを置いていく
</div>
<div id="main_contents_bottom"></div>

という書き方にしているのですが、<div id="main_contents">の背景画像が正しく出ず、地の色が見えてしまうのです。試しに<div id="main_contents">へpadding-bottom:300pxというような指定を加えると、正しく背景画像が出ました。

<div id="main_contents">
ここにいろいろなコンテンツを置いていく
</div>

という書き方ではダメなのでしょうか・・・?

確認はFirefoxとSafariでやっています。

投稿日時 - 2008-03-21 18:57:02

QNo.3882745

暇なときに回答ください

質問者が選んだベストアンサー

最初のソースでいいですので、以下を試してください。
#main_contents_bottom {}
内部に
clear:both;
を入れる。
</div>
<div id="main_contents_bottom"></div>

<div id="main_contents_bottom"></div></div>
にする。要は下のコーナーも一くくりにする
以上


簡単にいうとfloatとは浮かせて右か左に配置させる指示です。浮いているので高さが無く高さがないので背景が無いというような状態です。でclearとはそれをクリアーする指示。floatがleftだけなら、clear:leftでもオッケイ。というわけ。

html的物理レイアウトの悪癖をひきづっておられるようです。Web標準を学ばれるとレイアウトがとんでもなく楽になるので、初歩からの学習をおすすめします。

投稿日時 - 2008-03-25 15:25:07

お礼

な、なるほど!できました・・・!

昔ながらの「上にフタして真ん中があって、下にフタ」という考えが根強くあったため、

<div id="main_contents_bottom"></div></div>

という書き方は試しておりませんでした。

浮いたところを元に戻しつつフタをする、みたいな感じでしょうか。

Web標準、勉強します。ありがとうございました。

投稿日時 - 2008-03-25 16:09:09

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.2

<div id="main_contents_top"></div>

これ
<div id="main_contents_header"></div>
の間違いですよね。^~^

「top.png」「bg.png」「bottom.png」をそれぞれ
width: 800px;
height:20px;
の画像で作成し、CSSのURLを「./top.png」でなく「../top.png」にしたところ、Mozilla FirefoxやIE7では表示されていますね。

投稿日時 - 2008-03-22 12:50:08

お礼

ありがとうございます。そして、スミマセン!ご指摘の通り、指定ミスがありました。お恥ずかしい限りです。

最初の質問で、

<div id="main_contents">
ここにいろいろなコンテンツを置いていく
</div>

 ↑
ここを省略して書きすぎました。どうも私の場合は「floatさせた内容を入れると背景が出ない」という状態のようです。

http://2nose.com/css/?ID=120

<div id="main_contents">の間に、左右にfloatさせた内容(メニューとコンテンツ)を入れていました。

だんだんと難しい世界になってきましたが、がんばってみます。

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

投稿日時 - 2008-03-22 14:06:56

ANo.1

それは、画像の問題ではないですか?
例えば、その背景画像の大きさが高さ300px以上で、下の方にだけ画像が書かれているとか。
(上のほうが余白状態でテキスト1行だけでは画像部分が表示されない)

投稿日時 - 2008-03-21 19:38:28

お礼

ありがとうございます。背景として使用している「bg.png」は、小さな画像なのですが、no-repeat指定してないのでrepeatされてすべてを覆い尽くして表示されると思ったのです・・・

上の方に余白がある、ということはありません・・・

投稿日時 - 2008-03-22 14:02:13

あなたにオススメの質問