フォーマットされた HTML を動的メニューに変換する小さなスクリプトを開発しています。これは、フォーム作成者が JavaScript をあまり知らなくても動的メニューを作成できるようにするために行われています。セマンティック マークアップを記述するだけで、javascript コードがメニューを作成するという考え方です。
この fiddleでデモを見ることができます。
基本的に、次のような HTML を使用します。
<ul data-menu-horizontal="true" data-menu-width="500px">
<li><a href="index.html">Home</a></li>
<li><a href="index.html">Blog</a></li>
<li><a href="index.html">News</a></li>
<li><a href="index.html">Code</a></li>
<li>
<ul data-menu-horizontal="true" datamenu-header="Sub-Menu 1" data-menu-width="500px">
<li><a href="index.html">Home</a></li>
<li><a href="index.html">Computer Blog</a></li>
<li><a href="index.html">More News</a></li>
</ul>
</li>
<li>
<ul data-menu-vertical="true" data-menu-header="Sub-Menu 2" data-menu-width="500px">
<li><a href="index.html">Home</a></li>
<li><a href="index.html">Computer Blog</a></li>
<li><a href="index.html">More News</a></li>
</ul>
</li>
</ul>
...そしてこれを次のように変換します:
<ul id="13575820577141" class="menu-horizontal" style="width: 500px;">
<li><a href="index.html">Home</a></li>
<li><a href="index.html">Blog</a></li>
<li><a href="index.html">News</a></li>
<li><a href="index.html">Code</a></li>
<li>
<h2 class="menu-horizontal-header">Sub-Menu 1</h2>
<ul id="13575820577142" class="menu-horizontal" style="display: none; position: absolute; width: 500px;">
<li><a href="index.html">Home</a></li>
<li><a href="index.html">Computer Blog</a></li>
<li><a href="index.html">More News</a></li>
</ul>
</li>
<li>
<h2 class="menu-vertical-header">Sub-Menu 2</h2>
<ul id="13575820577143" class="menu-vertical" style="display: none; position: absolute; width: 500px;">
<li><a href="index.html">Home</a></li>
<li><a href="index.html">Computer Blog</a></li>
<li><a href="index.html">More News</a></li>
</ul>
</li>
</ul>
makeMenus()
各メニューに表示/非表示機能を割り当てるjQuery (関数で始まる) と、適切なサブメニューを表示/非表示にする mouseover/mouseout ul
( としてマークされている) メニュー ヘッダーがあります。h2
表示/非表示機能は、これまでにテストしたすべてのブラウザーでうまく機能します。li
問題は、IE7 では、要素間であっても「マウスオーバー」機能が空白に当たるたびに機能しなくなることです。メニューを「きれいにする」ために空白が必要になるため、余分な空白をすべて単純に削除したくありません。