本日はCSSのレイアウト例に関してよくあるものを見てみようと思います。
例によってサイトが具体的にどうなっているかを知りたい方は「プロとして恥ずかしくない 新・CSSデザインの大原則」を買いましょう。
代表的なカラムレイアウトについて
一般的な2カラム
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
<header> <div class="header_innner"> <h1> </h1> </div> </header> <div id="contents"> <div class="contents_innner"> <article id=""> <!-- メインカラム --> </article> <div id="side"> <!-- サイドカラム--> </div> <!-- 下記のようにfloat対策をしないと親の高さがゼロになり、footerが上がってきてしまう--> <div class="clear"></div> </div> </div> <footer> <div class="footer_inncer"> </div> </footer> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
header,footer, #contents{ /** 縮小した時につぶれないように最小幅設定をする必要あり**/ min-width:980px; } [ class*="_innner"]{ width:980px; margin:0 auto; } /** ともにfloatを設定しているのでwidthをしてしないと幅いっぱいに広がり崩れてしまう。 **/ #main{ float:left; width:630px; } #side{ float:right; width:300px; } /** 空divでclassを解除する代わりに下記のように書くこともできる**/ .contents_innner:after{ content:""; clear:both; display:block; } |
3カラム その1 (header,footterは2カラム時と同様なので省略)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
<div id="contents"> <div class="contents_innner"> <!-- 順番的には左からsub,main,sideだが記事コンテントして見せたいものはmainなのでこれを最初に書くのが正しいHTMLの書き方--> <article id="main"> <!-- メインカラム --> </article> <div id="sub"> <!-- サブカラム--> </div> <div id="side"> <!-- サイドカラム--> </div> </div> </div> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
.contents_innner{ position:relative; /** 基準点づくり **/ } #main{ float:left; width:520px; margin-left:185px; /** サムカラム分のあきを作る **/ } #sub{ position:abosolute; /** contentsの左上に配置させる **/ top:0; left:0; width:160px; } #side{ float:right; width:250px; } |
3カラムその2
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
<div id="contents"> <div class="contents_innner"> <div id="wrap"> <article id="main"> <!-- メインカラム --> </article> <div id="sub"> <!-- サブカラム--> </div> </div> <div id="side"> <!-- サイドカラム--> </div> </div> </div> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
.contents > .wrap{ float:left; } #main{ float:right; width:520px; } #sub{ float:left; width:160px; margin-right:25px; } #side{ float:right; width:250px; } |