[CSS]横スクロール時にヘッダやフッタが切れてしまう時の解決方法

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

デモのキャプチャ

How to Resolve a Fluid Header/Footer Problem When the Window is Resized
デモページ(不具合版)
※キャプチャはFirefox3.6(不具合の確認は横幅を小さくして)

この現象が起きる条件は下記のようになります。

  1. ヘッダとフッタのサイズは指定されていない。
    →横いっぱいに広がる。
  2. コンテンツエリアのサイズは指定されており、「margin:auto;」で中央に配置。
  3. ブラウザのサイズはコンテンツエリアのサイズより小さい。
    →ブラウザに横スクロールバーがでる。

期待される表示は、下記のようにコンテンツが中央に配置され、ヘッダとフッタが横いっぱいに広がったデザインです。

デモのキャプチャ

ブラウザの幅を広げたキャプチャ

こういったデザインを採用しているサイトは多くありますが、この問題はブラウザのサイズが小さい場合のみなので気がつかないことがあります。

解決方法

解決方法は簡単です。サイズを指定していないヘッダとフッタに「min-width」プロパティを使用して、コンテンツエリアと同じ幅を指定します。

不具合版のCSS

解決版のCSS

「min-width」を使用すると、下記のようにヘッダとフッタが切れずに表示されます。

デモのキャプチャ

デモページ(解決版)

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

top of page

Trackback

leave your Comments

※承認制のため、即時には反映されません。
※匿名、通りすがりさんなどへの回答は控えさせていただきます。

Comments

hidelow

on 2010年7月22日

これ、とても悩んでいました。
ありがとうございます。

コリス

on 2010年7月22日

> hidelow さん

さっそくお役に立てて、よかったです。
紹介したかいがありました :-)

nanashi

on 2010年7月22日

中にブロックをひとつ作ってあげると、
ie6でも対応できるんじゃないかな。

デモページの場合、例えば、

#header p, #footer p{width:960px;}

のように。

top of page

©2011 coliss