Negative Margin Trick
Posted at 2005-03-20T22:42:00+09:00 in Web Design
どうしてもフッターが横幅いっぱい出ないと気持ちが悪かったので、デザイン自体はそのままで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で作るならば、二つのカラムのwidthを足して100%になるようにすれば良いわけで、何気にあまり役に立たなかったりします。が、うちのサイトのようにどうしてもいわゆるサイドバーにあたるカラムを固定したい時には役に立つかも。
Weblog archives
by Month
- October, 2006 (9)
- September, 2006 (23)
- August, 2006 (31)
- July, 2006 (8)
- October, 2005 (13)
- September, 2005 (24)
- August, 2005 (26)
- July, 2005 (2)
- June, 2005 (2)
- May, 2005 (13)
- April, 2005 (30)
- March, 2005 (33)
- February, 2005 (13)
- January, 2005 (10)
- December, 2004 (28)
- November, 2004 (27)
- October, 2004 (25)
- September, 2004 (38)
- August, 2004 (52)
- July, 2004 (45)
- June, 2004 (41)
- May, 2004 (48)
- April, 2004 (36)
- March, 2004 (51)
- February, 2004 (55)
- January, 2004 (63)
- December, 2003 (46)
- November, 2003 (63)
- October, 2003 (92)
- September, 2003 (61)
- August, 2003 (93)
- July, 2003 (57)
- May, 2003 (5)
- April, 2003 (35)
- March, 2003 (35)
- February, 2003 (37)
- January, 2003 (62)
- December, 2002 (32)
This page was last modified on 2005-03-20T22:44:24+09:00 (in 0.139 secs).