プロが教えるわが家の防犯対策術!

footer部分の高さをmain部分の文章量に応じて、
footer部分の高さを変えたいと思います。
■main部分の文章量が多く画面がスクロールできる状態は
footer部分の高さを200pxにします
■main部分の文章量が少なく画面下に余白ができてしまう場合は
footer部分で埋めます

header,main,footerの外枠としてcontainerがあります

下記のソースコードがヒントになるかと思い少し変えてやっていますが
うまくいきません。
*{
margin:0;
padding:0;
}
html,body{
height:100%;
}
div#footer{
background-image:url(back.jpg);
height:100%;
min-height: 100%;
}
body > #container > #footer {
height: auto;
}

ご指導いただけないでしょうか。
よろしくお願いいたします。

「高さ指定を動的にする方法」の質問画像

A 回答 (3件)

ウィンドウの高さは、html,bodyにheight:100%;position:relative;で参照できるようになりますが・・その方法でも期待通りにはなりません。

なぜなら内容のない部分までスクロールさせないように・・ユーザーに全部でどこまであるかスクロールバーで判断できるようになっているからです。
 堅苦しい説明は置いておいて、似た状態にするには文書全体を<div>、HTML5では<article>で括ってしまえば良いです。
★Another HTML-lint 5 ( http://www.htmllint.net/html-lint/htmllint.html )
で検証済みのHTML4.01strictです。タブは_に置換してあります。

*{
margin:0;
padding:0;
}
は指定しないほうが良いです。他の要素が登場するたびにすべて再設定が必要になりスタイルシートが煩雑になります。
header,section,footerなどセクションを示す名称は複数回登場するものなのでIDではなくclassで指定しましょう。
 HTML5では、そのまま書き換えればよくなります。classだと詳細度が低く、かつ複数個所が一度に設定できますから・・
IDはリンクやjavascriptのターゲット、文書内に必ず一度しか登場し得ない要素にのみ使用するほうが楽です。

[HTML5]
<body>
 <header></header>
 <section>
  <section></section>
  <article>
   <header></header>
   <section></section>
   <footer></footer>
  </article>
  <aside>
   <h2></h2>
  </aside>
 </section>
 <footer></footer>
</body>


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html lang="ja">
<head>
_<meta http-equiv="content-type" content="text/html; charset=Shift_JIS">
_<title>サンプル</title>
_<meta name="author" content="ORUKA1951">
_<meta http-equiv="Content-Style-Type" content="text/css">
_<link rev="made" href="mailto:oruka1951@hoge.com" title="send a mail" >
_<link rel="START" href="../index.html">
_<style type="text/css">
<!--
html,body{margin:0;padding:0;width:100%;height:100%;position:relative;}
body{line-height:1.6em;}
h1,h2,h3,h4,h5,h6,p,dl,div{margin:0;line-height:1.6em;}
div.article{width:80%;margin:0 auto;padding:0;border:solid 1px red;min-height:100%;}
div.article>div>*{margin:0 20px;}
div.article>div>pre{width:80%;margin:10px auto;padding:0.5em 1em;}
/* 色分け */
body{background-color:gray;}
div.article{background-color:green;}/* ここに背景を指定する */
div.header{background-color:aqua;}
div.section{background-color:yellow;}
div.footer{}
pre{background-color:white;}
-->
_</style>
</head>
<body>
_<div class="article">
__<div class="header">
___<h1>タイトル</h1>
___<p>このページでは・・・・</p>
__</div>
__<div class="section">
___<h2>見出し</h2>
___<p>footer部分の高さをmain部分の文章量に応じて、</p>
<!-- 文章が長いときは・・
___<p>footer部分の高さを変えたいと思います。</p>
___<p>■main部分の文章量が多く画面がスクロールできる状態は</p>
___<p>footer部分の高さを200pxにします</p>
___<p>■main部分の文章量が少なく画面下に余白ができてしまう場合は</p>
___<p>footer部分で埋めます</p>
___<p></p>
___<p>header,main,footerの外枠としてcontainerがあります</p>
___<p></p>
___<p>下記のソースコードがヒントになるかと思い少し変えてやっていますが</p>
___<p>うまくいきません。</p>
___<pre>*{
margin:0;
padding:0;
}
html,body{
height:100%;
}
div#footer{
background-image:url(back.jpg);
height:100%;
min-height: 100%;
}
body > #container > #footer {
height: auto;
}</pre>
___<p>ご指導いただけないでしょうか。</p>
___<p>よろしくお願いいたします。</p>
-->
__</div>
__<div class="footer">
___<h2>文書情報</h2>
___<dl class="documentHistry">
____<dt id="FIRST-PUBLISHED">First Published</dt>
____<dd>2012-08-10</dd>
____<dt id="LAST-MODIFIED">Last Modified</dt>
____<dd>2012-08-10 12:00:00 (JST)</dd>
___</dl>
___<address>&copy; ORUKA1951 2012 - 2016 All Rights Reserved mailto:*****</address>
__</div>
_</div>
</body>
</html>
    • good
    • 0

footerの背景色を指定しない{background-color:transparent;background-image:none;}


でbodyに背景を指定すればすむだけでは??
    • good
    • 0

高さは%で指定ができないので、動的に変化させる場合はJavaScriptを使って高さを計算して指定するしかないと思います。

    • good
    • 0

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