パソコン教室・パソコンスクールISA渋谷STAFF BLOG

カラダとココロがアクティブになれる街★渋谷がもっと楽しくなれるBLOG

Archive for 11月 11th, 2009

こんにちは。
いきなりですが、例えば下図のような左右のカラムが固定で、
中央のカラムが可変というような3カラムのレイアウトを作りたい場合、通常CSSではfloatを使います。

ただしカラムレイアウトはdisplay: table-cellでも表現できます。
display: table-cellとは、テーブルの構造を表現できるCSSプロパティで
IE8から対応しています。今回はこの2つの方法を比較してみたいと思います。
まず最初にfloatで3カラムレイアウトを表現する場合、下記のようなHTMLとCSSになります。
【HTML】
<div id=”warrper”>
 <div id=”l_navi”>ナビゲーション</div>
 <div id=”content”>
  <div id=”content_inner”>コンテンツ</div>
 </div> 
 <div id=”r_side”>右サイドバー</div>
</div>
【CSS】
#l_navi {
 float: left;
 width: 200px;
 margin-right: -200px;
 background-color: #ff0000;
}
#content {
 float: left;
 width: 100%;
}
#content_inner {
 margin: 0 200px;
 background-color: #ffffff;
}
#r_side{
 float: left;
 width: 200px;
 margin-left: -200px;
 background-color: #009900;
}
上記のようにマイナスマージンを使ったり、真ん中のカラムをdiv要素で余分に囲ったりなど、
結構複雑な記述になります。floatを使っているので、clearも必要になります。
一方、display: table-cellで3カラムレイアウトを表現する場合、下記のようなHTMLとCSSになります。
【HTML】
<div id=”warrper”>
 <div id=”l_navi”>ナビゲーション</div>
 <div id=”content”>コンテンツ</div>
 <div id=”sidebar”>右サイドバー</div>
</div>
【CSS】
#warrper {
 width: 100%;
 display: table;
}
#l_navi, #content, #sidebar {
 display: table-cell;
}
#l_navi {
 width: 200px;
 background-color: #ff0000;
}
#content {
 background-color: #ffffff;
}
#r_side {
 width: 200px;
 background-color: #009900;
}
CSSソースの長さ自体は大して変わりませんが、非常にシンプルな記述になります。
floatを使っている場合に必要だったclearも不要です。
いままではfloatを使って行っていたカラムレイアウトが、このdisplay: table-cellを
使うことによって、よりシンプルに表現できます。
その他、display: table-cellは文字通りtableですので、
カラム内での縦方向の位置vertical-alignも思った通りに作用してくれます。
しかし、残念なのはこのdisplay:table-cell、IE8からしか対応していません。
FirefoxやSafariなど、IE以外の主要なブラウザはこのdisplay: table-cellに
ちゃんと対応しているのですが、現在でもIE6を使っているユーザーが大半なので・・・惜しいですね。
パソコンスクールISA渋谷校/INOUE

Continue reading...