12日目 | CSS floatを使った段組レイアウト

floatは情報優先度的に高いものを右側に置くことができるテクニック。
(普通コンピュータの世界では重要なものは左になる)

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>float練習</title>
<link rel="stylesheet" href="style1b.css" media="screen,print">
</head>
<body>
<div id="container">
  <div id="header">header<br></div>
  <div id="content">content<br></div>
  <div id="sidebar">sidebar<br></div>
  <div id="footer">footer<br></div>
</div>
</body>
</html>
@charset "utf-8";

html, body, div{
	  margin:0;
	 padding:0;
	}
	
body{
	 background-color:#ccc;
	 text-align:center; /*IE6対策*/
	}

#container{
	  width:780px;
	 margin:0 auto; /*上下0、左右が均等なサイズにあく*/
	 padding:10px;
	 background-color:#fff; /* レイアウト全体の幅を指定 */
	  overflow:hidden;	/*外箱containerが内箱header、sidebarによってつぶされるのを防ぐ指定*/
}
#header{
	  background-color:#c2fcfb;
	 height:50px;
	 margin-bottom:10px; /*上でmargin:0;にしてるのでここでは書かなくていい*/
}
#content {
	float: left; /* ボックスを左寄せに指定 */
	width: 500px; /* ボックスの幅を指定 */
	background-color: #f8febc;
	margin-bottom:10px; /*footerのmarginが効かないのでこちらにmarginつける*/
	height:300px;
	/*margin-left:10px*/
}
#sidebar {
	float: right; /* ボックスを右寄せに指定 */
	width: 270px; /* ボックスの幅を指定 */
	background-color: #Fecaff; /*薄いピンク*/
	height:300px;
	margin-bottom:10px;
}
#footer{
	clear:both;
	background-color:#add;
	height:50px;
	/*margin-left:10px;
	margin-right:10px;
	margin-bottom:10px;*/
}
[f:id:hatewemar2012:20121204225604p:image]

ポイント

overflow:hidden;

フロートしたものの外箱に対する指定。
これをしないと外箱に対して内箱がぐちゃっとくっついちゃう。文字が入っているところまでぐちゃっとなっちゃう。

clear:both;

footerにclear:both;で左右の回り込みを解除する。しかしこの指定をすると上下のmarginが効かなくなる。
でもcontent達との間に余白はとりたいのでcontent側にmargin-bottomを設定する。

上と同じレイアウトを自力で実現しようとしたCSS

margin:0 auto;を知らなかったので、ごりごりmarginを細かく設定してあります。

@charset "utf-8";

#container{
	  width:800px;
		background-color:#CC9; /* レイアウト全体の幅を指定 */
	  overflow:hidden;	/*外箱containerが内箱primary、secondaryによってつぶされるのを防ぐ指定*/
}
#header{
	  background-color:#ccc;
		height:50px;
		margin:10px;
}
#content {
	float: left; /* ボックスを左寄せに指定 */
	width: 500px; /* ボックスの幅を指定 */
	background-color: #C7D5ED; /*薄いブルー*/
	margin-bottom:10px; /*footerのmarginが効かないのでこちらにmarginつける*/
	height:300px;
	margin-left:10px;
	display:inline;
}
#sidebar {
	float: right; /* ボックスを右寄せに指定 */
	width: 270px; /* ボックスの幅を指定 */
	background-color: #F9CFBA; /*薄いピンク*/
	height:300px;
	margin-right:10px;
	display:inline;
}
#footer{
	clear:both;
	background-color:#add;
	height:50px;
	margin-left:10px;
	margin-right:10px;
	margin-bottom:10px;
}


bodyに設定していないのでセンターになっていません。背景グレーでもありません。
しかし一応余白のとり方は合っています。

display:inline;

marginをつけるとIE6の場合は倍になってしまうのだが、それを正常に見せるための設定です。

IE6対策

IE TESTER

これをインストールするとIEの各バージョンでの動作テストができます。もちろんIE6のテストもできます。
さらにDreamweaverのプレビュー用ブラウザとして追加登録すると作業効率がとてもアップします。