スタイルシートです。
ややこしいセレクタは使ってありません。子孫セレクタと擬似クラス(:hover)だけです。
セレクタの書き方で詳細度が変わりますから、それを利用しています。
HTMLもCSSもシンプルで分かりやすいので、ツールを使うより早いし、後々のメンテナンスが楽です。
★サブメニューは親メニューの近くに表示されます。
その他、下記サイトが参考になるでしょう。
⇒ナビゲーションリストを様々にデザインしてみよう。( http://www.ichiya.com/WebService/Howto/sample/HTML/nav/navigation1.html )
で[表示]→[スタイルシート]で色々なスタイルを選択する。
★ウェブ製作なら、開発者向けツール( https://addons.mozilla.jp/firefox/extensions/developer_tools/ )の豊富なfirefoxをお使いだと思いますが、firebugを使われると楽です。
@charset "UTF-8";
html,body{margin:0;padding:0;}
header,section,footer{width:80%;min-width:640px;max-width:800px;margin:0 auto;position:relative;}
header{min-height:200px;}
h1,h2,h3{margin:0;line-height:1.6em;}
p{line-height:1.6em;margin:0 1em;;text-indent:1em;}
header h1{width:20%;margin:0;position:absolute;}
header h1 img{width:100%;height:auto;}
section{min-height:300px;}
section section,section h2{margin:0 21%;min-width:0;width:auto;}
nav ol,nav ol li{list-style:none;margin:0;padding:0;text-align:center;line-height:2em;position:relative;}
nav ol li ol{display:none;}
nav ol li:hover ol{display:block;}
nav ol li a{display:block;width:100%;height:100%;}
header nav ol{margin:5px 1% 2em 20%;font-size:0;}
header nav ol li{float:left;display:inline-block;width:15%;font-size:18px;}
header nav ol li ol{width:100%;margin:0;position:absolute;top:36px;left:0;}
header nav ol li ol li{display:block;width:100%;}
section nav,section aside{width:20%;position:absolute;top:0;height:100%;}
section nav{left:0;}
section aside{right:0;font-size:0.9em;}
section nav ol li ol{width:100%;position:absolute;left:100%;top:0;}
/* 分かりやすいように色分け */
body{background-color:gray;}
header,section,footer{background-color:silver;}
section section{background-color:white;}
nav{background-color:rgb(255,255,160);}
nav ol li{background-color:yellow;}
aside{background-color:lime;}
nav li a:hover{background-color:white;}
できません。いくらスタイルシートが強力なプレゼンテーション能力を持つといっても文書構造に逆らうデザインは出来ませんし、出来ても使い物にはなりません。(CSS2.1で出来ることはできます)
ただ、スタイルシートは「HTMLがきちんとできている必要があります。」
『メモ: CSSスタイルシートを意図した通りに機能させるには、正しい文書解析木が必要です。つまり、正当なHTMLを用いるべきです。( http://jigsaw.w3.org/css-validator )』
HTML5(小文字じゃないです)なのに、なぜ<div class="header">を使うのですか!!HTML5では、厳格に
【引用】____________ここから
Authors are strongly encouraged to view the div element as an element of last resort, for when no other element is suitable. Use of more appropriate elements instead of the div element leads to better accessibility for readers and easier maintainability for authors.
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ここまで[4.5 Grouping content — HTML5( http://www.w3.org/TR/2012/CR-html5-20121217/grouping-content.html#the-div-element )]より
直訳すると、「著者は他に適切な要素がない時に限り、最後最後の手段としてdiv要素を使用するよう奨励される。より適切な要素を使用することは、読者にはアクセシビリティの向上と、著者にはメンテナンス性の容易さつながる。」
とDIVの使用を避けるように強く書かれています。極論すればDIVは可能な限り使うな!!
HTML5、CSS3はまだ時期尚早なので、HTML4.01として回答すると
<body>
<div class="header">
<h1>タイトル</h1>
</div>
<div class="section">
<h2>本文見出し</h2>
<p>記事</p>
<div class="nav">
<ol>
<li><a href=""></a>
<ol>
<li><a href=""></a></li>
</ol>
</li>
<li></li>
<li></li>
</ol>
</div>
</div>
<div class="footer></div>
</body>
HTML5だと
<body>
<header>
<h1>タイトル</h1>
</header>
<section">
<h2>本文見出し</h2>
<p>記事</p>
<nav>
<ol>
<li><a href=""></a>
<ol>
<li><a href=""></a></li>
</ol>
</li>
<li></li>
<li></li>
</ol>
</nav>
</section>
<footer></footer>
</body>
になります。
div.header,div.section,div.footer{min-width640~max-width:800px程度で中央配置}
div.section{position:relative;}
div.section div.nav{position:absolute;top:0;right:0;width:20%;}
当たりになるでしょう。
ナビゲーションにポインターをあわせると、サブメニューがsectionの上部に表示させるようにする。
なお、floatは使うべきではありません。本文中で挿絵等を自在にfloat(本来の使い方)が出来なくなります。また、HTMLを文書構造を無視してデザインのために書くことになり、デザインの変更ができなくなります。
★問題点、ページが長くなるとサブメニューが見えない!!
★クリックではなく:hoverになる。
よって、あまり良いデザインとは思えません。
ナビゲーションをfixedで常に左右どちらかにおいておいて、ポインターが乗ればサブ項目が現れるようにするほうが良いでしょう。
スタイルシートで自由自在にデザインできるメタには、正統なHTMLをまず覚えましょう。そうしないと、何も出来ない。デザインのためにHTMLを書くことになり、使い勝手もメンテナンス性も低下します。
お礼
大変分かり易い説明をありがとうございます。自分の勉強や認識の不足を痛感しました。 要するに、タグ名だけを書くと <doctype> <html> <head> <title></title> (<meta> 必要に応じて) (<link> 必要に応じて) </head> <body> <header> <section> <h2>・・・</h2> <section> <h3>・・・</h3> <section> <h4>・・</h4> </section> </section> </section> </header> <section> <h2>・・・</h2> <nav> <ul> <li></li> ・ ・ ・ </ul> </nav> <section> <h3>・・・</h3> <img> (他必要に応じて) <section> (他必要に応じて) <h4>・・</h4> (他必要に応じて) </section> (他必要に応じて) </section> </section> <footer> <address> (他必要に応じて)</address> </footer> </body> </html> と、こんな感じの流れで良いのでしょうか。あとはこれに肉付け・羽付けをし、コンピュータにとっても、ホームページ閲覧者にとっても分かり易いページを作っていけばよいような気がしています。 あと、表示速度の面から、scriptはhtmlの最後に記述した方が良いと書かれたサイトが存在したのですが、この辺はどう思われますか。 なお、本日通っている施設より、『施設では使わなくなった本』を13冊ほど貰ってきました。その中にホームページ・CGI関係も4冊ほどあるので、少しだけ古いXHTMLの本等は、教えて頂いたページと比較しながら勉強したいと思います。 ありがとうございました。