どうしてもフッターが横幅いっぱい出ないと気持ちが悪かったので、デザイン自体はそのままでCSSをいじり倒してみました。position
での絶対配置によるレイアウトのままで、フッターを常にページ最下段に置きかつ横幅いっぱいというのはメンドクサそう(height
周りの実装がバリエーションに富んでいるので)なので、float
によるレイアウトに戻してみました。うちのサイトはHeader + (Liquid Column + Fixed Column) + Footerという構成なので、いわゆるCreating Liquid Layouts with Negative Marginsというのを利用して、レイアウト。てか1年半前から使いつづけていたモノに戻ったとも言う。
モックアップはこのようになってます。#header
と#footer
は何も考えずに、通常のフローに従って配置するので、特に何もレイアウト的に凝る必要は無いですが、#footer
にclear: both;
を指定しておく必要はあります。主要な部分は#contents
へ指定するmargin-right
で、この値に#sidebar
の(Fixedな)幅分マイナス方向に指定してやります(つまり#sidebar
の幅を300pxにしたいのなら、#contents
のmargin-right
に-300pxを指定するということ)。これで大体完成ですが、このままだと#contents
と#sidebar
が重なり合ってしまう(まぁそういう風に指定しているわけですが)ので、#contents
直下の全てのブロック要素に、margin-right
で#sidebar
の幅分プラス方向に指定してやると重ならなくなります。
これでレイアウトはほぼ問題無いんですが、各カラムにbackground
プロパティで背景に上から下まで色を塗る(背景画像を敷き詰める)といったことは出来ません。その場合はbody
要素にbackground
を指定してうまいことやるという、Faux Columnsというテクニックを応用して利用する必要があるでしょう。
何も考えずにHeader + (Liquid Column + Liquid Column) + Footerで作るならば、2つのカラムのwidth
を足して100%になるようにすれば良いわけで、何気にあまり役に立たなかったりします。が、うちのサイトのようにどうしてもいわゆるサイドバーにあたるカラムを固定したい時には役に立つかも。