- Last Modified: 2008年11月27日 23:14
このページは、株式会社技術評論社より刊行されている実践 Web Standards Design に記載しているソースコードのサンプルを呈示しています。 書籍該当部分と照合しやすいように前後の解説文も掲載していますが、あくまで照合用のため、適宜前後を省いたり内容を省略したりしています。 書籍を読みながら実際にサンプルを表示する際の補助資料として活用してください。
また、 XHTML ソースと CSS ソース、関連画像を含めた全サンプルの ZIP アーカイブ (3,104,743 Bytes) もダウンロードできます。 ( ZIP アーカイブには解説文は含まれていません。)
解説 (1)
ナビゲーションとなるカラムを固定配置させ、フレームのように表示するレイアウト方法です。
XHTML
<h1>Position Layout</h1>
<div id="content">
<div id="main">
<div class="section">
<h2>Static</h2>
<p>ボックスを通常配置します。ブロックボックスは<!-- 省略 --></p>
</div>
<div class="section">
<h2>Relative</h2>
<p>ボックスを相対配置します。通常フローに従って<!-- 省略 --></p>
</div>
<!-- 省略 -->
</div>
<div id="navi">
<ul>
<li>Categories
<ul>
<li>Artworks</li>
<li>Flash</li>
<li>Impressions</li>
<li>Movable Type</li>
<li>Web Design</li>
<li>XHTML CSS</li>
</ul>
</li>
<!-- 省略 -->
</ul>
</div>
</div>
Download(1)
解説 (2)
div#navi に position: fixed を指定し、ルート要素からの距離を top 、 right プロパティで指定します。 フレームのような表現をするために、 height: 100% を指定し、 body 要素の高さいっぱいまで広がるようにします。 div#main と h1 要素には、右に配置されるナビゲーション領域と重ならないようにマージンを指定します。
ナビゲーションカラムは右に配置され、 height: 100% の指定により領域を高さいっぱいまで広げます。 固定配置により、スクロールした場合でもナビゲーションの位置は変化しません。
CSS
body {
margin: 1em 20px;
background-color: #aaa;
font-family: "Trebuchet MS", sans-serif;
}
/*--------------------------------------
Layout
----------------------------------------*/
div#main {
margin-right: 150px; /* ナビゲーション領域を確保 */
padding: 0.2em 0;
background-color: #fff;
}
div#navi {
padding: 0.2em 0;
border-right: 1px solid #cc0258;
width: 150px; /* ナビゲーションの幅 */
height: 100%; /* body要素の高さいっぱいまで広げる */
position: fixed; /* 固定配置 */
top: 0; /* 基点からの上方向の距離 */
right: 0; /* 基点からの右方向の距離 */
background-color: #ff358b;
}
/*--------------------------------------
Elements
----------------------------------------*/
h1 {
margin-right: 150px; /* ナビゲーション領域を確保 */
color: #fff;
font-weight: normal;
font-size: 140%;
}
h2 {
margin: 0.8em 16px;
padding: 0.2em 16px;
color: #999;
background-color: #eee;
font-weight: normal;
font-size: 100%;
}
p {
margin: 1em 16px;
line-height: 1.6;
color: #999;
font-size: 80%;
}
ul {
margin: 0.8em 16px;
padding: 0;
color: #ffebeb;
}
li {
margin: 0.2em 8px;
font-size: 80%;
}
li li {
font-size: 100%;
}


