• 締切済み

ヘッダとフッタが固定でコンテンツのみスクロール可能

いつもお世話になります。 ヘッダ部とフッタ部は固定で、コンテンツ部のみで表示エリアを超えた場合スクロールバーを 表示する、というHTMLを実現するにはどうすればよいでしょうか。 (ウィンドウサイズに応じてコンテンツ部は変動するが、ヘッダとフッタは常に固定) イメージとしては以下の構成になります。いろいろ調べてみたのですが、ヘッダとフッタは固定 できてもスクロールバーがウィンドウ全体に表示されてしまうものばかりでした。 -------------------------------- ヘッダ(固定) (スクロールバーなし) -------------------------------- コンテンツ (スクロールバーあり) -------------------------------- フッタ(固定) (スクロールバーなし) -------------------------------- フレームは使用せず、CSSのみで実現する方法を教えて頂けませんでしょうか。 IE7、IE8で動作させたいと思っています。 宜しくお願いします。

みんなの回答

  • LOHA
  • ベストアンサー率52% (203/388)
回答No.2

box-sizing(CSS3)を使えばCSSだけで出来ないことも無いです。 #私が思いつく限りはbox-sizingしかないのですが、他にも方法があるんでしょうかね なのでIE8であればOKですが、IE7ではJavaScriptを使う以外方法はないかと思います #IE6なら逆にバグを利用すればできるかもしれません。 #IE7でもbox-sizing-polyfillがありますが、htcの内部はJavaScriptですし。。。 一応サンプルを載せておきます(IE8はOK、IE7はNG)。 ※スペースは全角 <!DOCTYPE html> <html lang="ja">  <head>   <meta charset="utf-8" />   <title>Test</title>   <style> * { margin: 0; padding: 0; } html, body { height: 100%; } body {  padding: 100px 0 100px;  box-sizing: border-box; } #header {  position: absolute;  top: 0;  height: 100px;  width: 100%;  background-color: #EEE; } #footer {  position: absolute;  bottom: 0;  height: 100px;  width: 100%;  background-color: #EEE; } #content {  height: 100%;  background-color: #AAA;  overflow: auto; } #content div {  height: 1000px; }   </style>  </head>  <body>   <div id="header">へっだ</div>   <div id="content"><div>なかみ</div></div>   <div id="footer">ふった</div>  </body> </html>

  • ORUKA1951
  • ベストアンサー率45% (5062/11036)
回答No.1

・header,footerをabsoluteで上下に固定する。 ・header,footerをfixedで固定する。  前者のほうが望ましい。  ですが、スクロールバーをsection部分にのみ表示させることはできないです。  なぜなら、heightにautoの値が指定されたとき、その算出値は内容の高さでなければならないからです。  これは、widthともっとも異なる部分です。  理由は、お分かりだと思いますが、内容を表示するに当たって、巾によって表示領域は下に長くならないとまずいからです。  詳しくはCSS2.1の仕様書の「10.6.2 Inline replaced elements, block-level replaced elements in normal flow, 'inline-block' replaced elements in normal flow and floating replaced elements ( http://www.w3.org/TR/2004/CR-CSS21-20040225/visudet.html#inline-replaced-height )」をお読みください。CSS2から変更されています。ちなみにCSS2( http://www.swlab.it.okayama-u.ac.jp/man/rec-css2/visudet.html#q16 )は訂正されました。  きちんと、具体的な値(pxなど)で指定しなければなりません。  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  さすれば、sectionにスクロールバーを表示させることが出来ます。  javascriptでウィンドウ高さを求め、その値を元にスタイルシートを書き換えれば出来なくはないですが、色々問題があってお勧めしません。

kamakuragengorou
質問者

お礼

返答ありがとうございます。 > javascriptでウィンドウ高さを求め、その値を元にスタイルシートを書き換えれば出来なくはないです > が、色々問題があってお勧めしません。 おっしゃるとおり、ピクセル固定であればコンテンツ部のみにスクロールを表示させることはできますよね。CSSのみでできないとなれば、JavaScriptを使用して、ウィンドウサイズのイベントを拾って、動的にサイズを変更していくしかないか、と思っていたのですが、問題というのは何でしょうか。 何か問題があるという認識がありませんでした。教えて頂けないでしょうか。 宜しくお願いします。

関連するQ&A