JavaScript を用いて、onmouseover と onmouseout の操作に対応して class 属性値を切り替える。
初期値は off で、子要素の ol 要素は非表示。オンマウスで値が off にセットされ、子要素の ol 要素が表示される。
ul.main に position:absolute; を指定すれば、子要素の表示により領域が拡張されても他の要素の配置に影響を及ぼさない。
すると不思議なことに WinIE ではカーソルが拡張前の領域を外れると属性値切り替えがキャンセルされる。
<div>
<ul class="main">
<li class="off" onmouseover="this.className='on'" onmouseout="this.className='off'">ぬるぽ
<ol>
<li>ガッ</li>
<li>ガッガッ</li>
<li>ガッガッガッ</li>
</ol>
</li>
<li class="off" onmouseover="this.className='on'" onmouseout="this.className='off'">いざ
<ol>
<li>鎌倉</li>
<li>さらば</li>
</ol>
</li>
</ul>
</div>
div
{height:3em;}
div *
{margin:0; padding:0;}
ul.main
{position:absolute; width:100%;}
ul.main li
{padding-left:0.5em; list-style:none; background:#ccc; border:1px solid #000; line-height:2;}
li.on,li.off
{width:8em; float:left;}
ul.main li ol
{margin-left:-0.5em; position:relative; top:0.5em; left:0.5em; width:8.5em; border-bottom:1px solid #000;}
ul.main li li
{list-style:decimal inside; background:#fff; border-bottom:none;}
li.on ol
{display:block;}
li.off ol
{display:none;}
試行錯誤メモ