私は水平のドロップダウンメニューを作っていましたが、その項目の下に各ドロップダウンメニューを配置すると、気に入っていました。左:0;ポジションに必要?
#nav { float:right; }
#nav li { display:inline;position:relative; }
#nav li ul { display:none; }
#nav li ul.current { position:absolute; display:block; z-index:9; left:0; }
#nav li ul.current li { display:block; }
そして、それは
$(document).click(function(e) {
if($(e.target).is("#nav li a")) {
$("#nav li ul.current").removeClass("current");
$(e.target).parent().find("ul").addClass("current");
} else {
$("#nav li ul.current").removeClass("current");
}
});
メニューは、このコードで動作しますが、私の質問は動作させるために
<ul id="nav">
<li><a href="#">link</a>
<ul>
<li><a href="#">sub</a></li>
</ul>
</li>
<li><a href="#">link</a>
<ul>
<li><a href="#">sub</a></li>
</ul>
</li>
</ul>
のメニュー構造といくつかのJS:
なぜ左です:0; #nav li ul.currentでサブメニューが正しく配置されている必要がありますか?
左記なし:0;それはクロムでのみ動作します。 Opera、FF、IE8はすべて#nav ulの開始位置にサブメニューを表示します。
私は、絶対配置された要素が、静的以外の位置を持つ最も近い親要素に移動したと考えました。 #navは#navではありません。