因此,我正在尝试创建一个包含导航项堆栈(行)的垂直导航菜单。选择这些行中的一个时,我希望一个菜单从上面滑出(和下面),当此子菜单的顶部到达被单击的行的底部时。这些子菜单还应该有一个起始位置,其中子菜单底部等于相关导航项底部,以便在向下动画时立即可见。
这个定位,停止点和起点,可以在这个小提琴 -> http://jsfiddle.net/pGfCX/57/中看到。只需记下起点和终点。由于 position:relative 的性质,小提琴的其余部分被破坏了。
我认为 z-index 可以修复后续导航项的推送(正如您在刚刚链接的小提琴中看到的那样)......但这似乎不起作用。看起来只有 position:absolute 会启用正确的重叠(即子菜单隐藏在其上方的元素下方并覆盖其下方的元素)。不幸的是,这也有它的缺点。正如您在这个小提琴中看到的那样:http: //jsfiddle.net/pGfCX/60/。您会注意到起始位置和结束位置始终相同,因为我每次都使用相同的类。尽管我可以将每个子菜单都专门定位为它自己的唯一 ID,但这将非常低效且难以维护。
Bsically,我需要两种方法的混合......开始/结束位置的相对定位和绝对位置以实现正确的重叠。
希望这是有道理的......我真的需要帮助。我坚持使用这两种方法,但都没有工作。这令人沮丧。
这是我当前的 jQuery 代码:
$('.row').click(function() {
// make all siblings AFTER row clicked get this class to reduce z-index and allow the menu to display above these rows (while still remaining below the rows above)
$(this).nextAll().addClass('rowZ');
$(this).next('.menu').show()
$(this).next('.menu').animate({'top':'0'});
});
// when menu is out, the row clicked is the header row, upon clicking this, the related menu (and by default, all subsequent menus within) animate back up and hide
$('.rowHead').click(function() {
$(this).next('.menu').animate({'top':'-100%'});
$(this).next('.menu').hide();
});
非常感谢任何和所有帮助。谢谢!
编辑*新方法...导航项内的菜单,使其具有绝对定位并相对于导航项。但是,z-index 似乎关闭了(即,它在导航项(它是父项)之上进行动画处理,尽管 z-index 会提出其他建议: