彩音開発室WEB関連覚書
メニューを固定幅にしたリキッドデザイン
画像  

リキッドデザインでサイトレイアウトを構成したいが、メニュー部分は固定幅にしたいというケースは結構あるだろう。細かい例を挙げるのはここでは割愛するが、構造上や他のデザインとの兼ね合いで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 {
float: left;
width: 200px;
margin-left: -100%;
background-color: #0000ff;
}

#footer {
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を足してやることでレイアウトを実現する。


参考文献
Web標準XHTML+CSSデザイン クリエイターが身につけておくべき新・100の法則。Web標準XHTML+CSSデザイン クリエイターが身につけておくべき新・100の法則。