作例6

JavaScript を用いて、onmouseover と onmouseout の操作に対応して class 属性値を切り替える。

初期値は off で、子要素の ol 要素は非表示。オンマウスで値が off にセットされ、子要素の ol 要素が表示される。

ul.main に position:absolute; を指定すれば、子要素の表示により領域が拡張されても他の要素の配置に影響を及ぼさない。

すると不思議なことに WinIE ではカーソルが拡張前の領域を外れると属性値切り替えがキャンセルされる。

対策1

対策2

対策3

div
{height:5em;}
ul.main
{position:absolute;}
ul.main li
{margin:1em; border:1px solid #000; list-style:inside; background:#ccc;} /* padding:10px; を削除 */
ul.main li ol
{margin:0;}
ul.main li li
{margin:0; padding:10px; background:#fff;}
li.on ol
{display:block; width:80%; overflow:hidden;}
li.off ol
{display:none;}

こうしてようやく問題の封じ込めに成功したわけだけれども、Opera や Firefox ならそもそも怪奇現象は起きないわけで、WinIE にはまったく困ったものだと思う。