段組みレイアウトの基礎
解説第八弾です。
本コンテンツは、以下のページのHTML/CSSソースを解説しています。
- CSS段組レイアウト雛型(レイアウトテンプレート)
http://d.hatena.ne.jp/chaichanPaPa/20090214/1234611010 - サンプルページ
http://chaichan.lolipop.jp/src/sright.htm
今回は、段組みレイアウトの基礎的なところを解説してみます。
スタイル指定なしのHTMLから徐々に段組みレイアウトのHTMLへ進化させていきます。
まずは、スタイル指定(CSS)なしのHTMLです。
尚、HTMLソースは、ブラウザで表示させた後、ブラウザのメニューからの表示で見てください。
まず、サンプル1でCSSを使わず(見やすくするため「background-color」は例外)以下の構造のHTMLを表示しています。
- header_containerというidのdiv要素(ヘッダー)
- contents_containerというidのdiv要素(コンテンツ)
- sidebar_containerというidのdiv要素(サイドバー)
- footer_containerというidのdiv要素(フッター)
サンプル1では、ブラウザのデフォルトでのマージンとパディングがあるので、サンプル2ではこれをゼロにします。
サンプル3では、サンプル2でのcontents_containerを左フロートさせ右側へsidebar_containerを回り込ませてみます。
一見、IEもFirefoxも段組みになります。
しかし、sidebar_containerは親要素の100%の横幅になっているだけで、実は段組みではないのです。
フロートさせたブロックレベル要素の後につづくフロートでないブロックレベル要素は、あたかも前のフロート要素が無かったようにレイアウトされるのです。
では、段組みさせるのは、どうするかというと、後につづくブロックレベル要素もフロートさせます。
これで、IEもFirefoxも段組みになりました。
しかし、IEは、ウインドウの大きさを変えると、段組みになったり、カラム落ちになったり不安定なのです。
これを解決するには、sidebar_containerの横幅を30%から29.9%にすると、IEでも大丈夫になりますね。
どうやら、IEでは、レイアウト計算で誤差がでるようです。
これで、段組みが完成しました。
しかし、ulやol要素の点や番号の表示が変です。
なので左マージン(margin-left:25px;)をとり、いい感じになりました。
このように、レイアウト横幅を親要素のパーセントで指定すると比較的簡単に段組みレイアウトができます。
関連ページ:
- 解説第一弾:ドキュメントタイプと表示モード
http://d.hatena.ne.jp/chaichanPaPa/20090303/1236082845 - 解説第二弾:SEOとメタ要素とタイトル要素
http://d.hatena.ne.jp/chaichanPaPa/20090304/1236169917 - 解説第三弾:HTMLマーキングで文章構造化
http://d.hatena.ne.jp/chaichanPaPa/20090306/1236343007 - 解説第四弾:段組みレイアウトの解説
http://d.hatena.ne.jp/chaichanPaPa/20090308/1236483305 - 解説第五弾:CSS詳細部の解説1
http://d.hatena.ne.jp/chaichanPaPa/20090311/1236774374 - 解説第六弾:CSS詳細部の解説2
http://d.hatena.ne.jp/chaichanPaPa/20090312/1236860887 - 解説第七弾:右サイドバーを左サイドバーへ
http://d.hatena.ne.jp/chaichanPaPa/20090313/1236949117