Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
  • ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:divの背景を高さ100%表示)

背景色設定時のdivの高さ100%表示とピクセル指定の違いについて

このQ&Aのポイント
  • divを使って背景色を設定した際、高さ100%表示とピクセル指定の違いが問題となります。
  • ピクセル指定の背景は、スクロールバーが出た場合でも指定された高さまで背景色が表示されますが、100%表示指定の背景はウィンドウで隠れた部分で切れてしまいます。
  • 解決策として、min-heightを追加することで問題を解決できると言われていますが、正しく表示されない問題が発生しています。

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

  • ベストアンサー
  • fji_jp
  • ベストアンサー率100% (3/3)
回答No.4

ウィンドウで隠れた部分も含めた左のdivの高さ100%表示は次のやり方でできると思います。 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <meta http-equiv="Content-Style-Type" content="text/css"> <title></title> <style type="text/css"> html, body{ margin:0px; height:100%; } #page{ min-height:100%; overflow:hidden; } #test1{ float:left; width:400px; height:100%; background-color:black; padding-bottom:32767px; margin-bottom:-32767px; } #test2{ float:right; width:400px; height:800px; background-color:black; } </style> </head> <body> <div id="page"> <div id="test1"></div> <div id="test2"></div> </div> </body> </html> ※DOCTYPEの宣言は重要なので、省略すると高さ100%表示にならなくなったりし、レイアウトが変わってきます。 test1では、敢えて内余白を増やして背景領域を複数ブラウザが解釈できる最大値まで増やし、外余白で同じ値を減らすことにより差し引き0にしています。 そして、親要素のpageで子要素の差し引き分を丸め込むために最小高さ100%でoverflow:hiddenをすることにより、子要素のtest1は表示上高さ100%の可変高となります。

uviol
質問者

お礼

まさにイメージ通りです! こんなやり方は全く思いつきませんでした。 本当にありがとうございました。

すると、全ての回答が全文表示されます。

その他の回答 (3)

  • dscripty
  • ベストアンサー率51% (166/325)
回答No.3

[ANo.2] への補足に対する回答ね。 「この理由から察すれば、やはり画面から隠れた部分にまで高さ一杯の背景色をdivに塗ることはできないという事ですよね?」 ↓こうゆうこと? <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja"> <head> <title>css min-height を使ってみる</title> <style type="text/css"> html, body { height:100%; margin:0; padding:0; } #test1 { min-height:100%;width:50%; float:left; background-color:#cccccc; } #test1 > p { padding:1em; margin:1em; } #test2{ float:right; height:100px; width:50%; background-color:#ccccff; } </style> </head> <body> <div id="test1"> <p>#test1</p> <p>#test1</p> <p>#test1</p> <p>#test1</p> <p>#test1</p> <p>#test1</p> <p>#test1</p> <p>#test1</p> <p>#test1</p> <p>#test1</p> <p>#test1</p> <p>#test1</p> </div> <div id="test2"> <p>#test2</p> </div> </body> </html>

uviol
質問者

お礼

ありがとうございました。 ただ、今回はテキストの表示はない状態をイメージしていました。 説明が足りず申し訳ございませんでした。

すると、全ての回答が全文表示されます。
  • dscripty
  • ベストアンサー率51% (166/325)
回答No.2

対処は出たから、理由を説明するね。 (1) #test1 div { height:100%; } のとき (ブラウザの高さ) = (bodyの高さ) = (divの高さ) だから、はみ出たら表示されない。 (2) #test2 div { height:800px; } のとき、今回の場合は (ブラウザの高さ) = (bodyの高さ) < (800px=divの高さ) だから、800px までは画像が表示されるけど、 画像の高さが 800px を超えたら、その超えた部分は表示されない。

uviol
質問者

補足

ご丁寧な説明ありがとうございました。 この理由から察すれば、やはり画面から隠れた部分にまで 高さ一杯の背景色をdivに塗ることはできないという事ですよね?

すると、全ての回答が全文表示されます。
  • t_ohta
  • ベストアンサー率38% (5410/14073)
回答No.1

min-height を 100% ではなく 800px にすれば背景が塗られると思います。

uviol
質問者

補足

ご回答ありがとうございました。 左側のdivの背景色をピクセル指定ではなく、常に画面の高さ一杯に表示させる事は不可能なのでしょうか? min-heightにしますと、結局右側の背景と全く同じものになってしまいますので、 意図している表示にはなりませんでした。。

すると、全ての回答が全文表示されます。

関連するQ&A