リキッドデザインでサイトレイアウトを構成したいが、メニュー部分は固定幅にしたいというケースは結構あるだろう。細かい例を挙げるのはここでは割愛するが、構造上や他のデザインとの兼ね合いでCSSの記述に苦労するケースがある。そういうときの組み方の一例を記述しておく。
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-W3CDTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="ja" xml:lang="ja">
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8" />
<title>メニュー固定幅のリキッドデザインCSS</title><style type="text/css" media="all">
body {
margin: 0px;
background-color: #000000;
}#header {
height: 80px;
background-color: #ff0000;
}#main {
float: left;
width: 100%;
background-color: #00ff00;
}#contents {
margin-left: 200px;
}#menu {
#footer {
float: left;
width: 200px;
margin-left: -100%;
background-color: #0000ff;
}
clear: both;
background-color: #ffff00;
}</style>
</head>
<body>
<div id="header">ヘッダ</div><div id="main">
<div id="contents">コンテンツ</div>
</div><div id="menu">メニュー</div>
<div id="footer">フッタ</div>
</body>
</html>
考え方
#mainのwidthに指定した値と同じ大きさの値を、#menuのmargin-leftにマイナスをつけて指定する。これにより、floatを指定した#menuが#mainの上に重なった状態になる。その上で、重なってしまった幅だけ#contentsのmargin-leftを足してやることでレイアウトを実現する。