[CSS]横スクロール時にヘッダやフッタが切れてしまう時の解決方法
ヘッダやフッタがブラウザの横幅より広い際に、横スクロールするとヘッダとフッタが切れてしまうのを解決する方法を紹介します。
これはIE6などの旧式のブラウザだけでなく、Firefox3.6やChromeでも起きる現象です。

How to Resolve a Fluid Header/Footer Problem When the Window is Resized
デモページ(不具合版)
※キャプチャはFirefox3.6(不具合の確認は横幅を小さくして)
この現象が起きる条件は下記のようになります。
- ヘッダとフッタのサイズは指定されていない。
→横いっぱいに広がる。 - コンテンツエリアのサイズは指定されており、「margin:auto;」で中央に配置。
- ブラウザのサイズはコンテンツエリアのサイズより小さい。
→ブラウザに横スクロールバーがでる。
期待される表示は、下記のようにコンテンツが中央に配置され、ヘッダとフッタが横いっぱいに広がったデザインです。

ブラウザの幅を広げたキャプチャ
こういったデザインを採用しているサイトは多くありますが、この問題はブラウザのサイズが小さい場合のみなので気がつかないことがあります。
解決方法
解決方法は簡単です。サイズを指定していないヘッダとフッタに「min-width」プロパティを使用して、コンテンツエリアと同じ幅を指定します。
不具合版のCSS
解決版のCSS
「min-width」を使用すると、下記のようにヘッダとフッタが切れずに表示されます。

この方法の唯一の欠点はIE6だけ非対応なことです。IEの場合はJavaScriptを使用すると解決できると思いますが、そこまでする必要はないでしょう。
Post on:2010年7月22日









Comments
hidelow
on 2010年7月22日
これ、とても悩んでいました。
ありがとうございます。
コリス
on 2010年7月22日
> hidelow さん
さっそくお役に立てて、よかったです。
紹介したかいがありました :-)
nanashi
on 2010年7月22日
中にブロックをひとつ作ってあげると、
ie6でも対応できるんじゃないかな。
デモページの場合、例えば、
#header p, #footer p{width:960px;}
のように。