我有这个菜单:
<html>
<head>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.js"></script>
<script>
$(function() {
$("#menu").find("li").each(function() {
if ($(this).find("ul").length > 0) {
$(this).mouseenter(function() {
$(this).find("ul").stop(true, true).slideDown();
});
$(this).mouseleave(function() {
$(this).find("ul").stop(true, true).slideUp();
});
}
});
});
</script>
<style>
#menu {
display:block;
margin:120px auto 20px;
border:1px solid #222;
position:relative;
background-color:#6a6a6a;
font:16px Tahoma, Sans-serif;
}
#menu ul {
padding:0;
margin:0;
}
#menu li {
position:relative;
float:left;
list-style-type:none;
}
#menu ul:after {
content:".";
display:block;
height:0;
clear:both;
visibility:hidden;
}
#menu li a {
display:block;
padding:10px 20px;
border-left:1px solid #999;
border-right:1px solid #222;
color:#eee;
text-decoration:none;
}
#menu li a:focus {
outline:none;
text-decoration:underline;
}
#menu li:first-child a {
border-left:none;
}
#menu li.last a {
border-right:none;
}
#menu a span {
display:block;
float:right;
margin-left:5px;
}
#menu ul ul {
display:none;
width:100%;
position:absolute;
left:0;
background:#6a6a6a;
}
#menu ul ul li {
float:none;
}
#menu ul ul a {
padding:5px 10px;
border-left:none;
border-right:none;
font-size:14px;
}
a:hover {
cursor: pointer;
}
</style>
</head>
<body>
<div id="menu">
<ul>
<li>
<a>Item1</a>
</li>
<li>
<a>Item2</a>
<ul>
<li><a href="#">item2-1</a></li>
<li><a href="#">item2-2</a></li>
<li><a href="#">item2-3</a></li>
</ul>
</li>
<li>
<a>Item3</a>
<ul>
<li><a href="#">item3-1</a></li>
<li><a href="#">item3-2</a></li>
<li><a href="#">item3-3</a></li>
</ul>
</li>
<li>
<a>Item4</a>
</li>
</ul>
</div>
<body>
<html>
当光标位于包含li
的{{1}}上时,它会向下滑动。
我希望子菜单在水平菜单上方向上滑动而不是向下滑动。
我怎样才能做到这一点?
谢谢!
答案 0 :(得分:6)
#menu ul ul {
bottom:38px;
}
设置嵌套列表的底部可以解决问题
答案 1 :(得分:3)
我不完全确定问题是什么,但您应该能够使用更复杂的选择器将代码缩减到此:
$("#menu > ul > li:has(ul)").mouseenter(function() {
$(this).find("ul").stop(true, true).slideDown();
}).mouseleave(function() {
$(this).find("ul").stop(true, true).slideUp();
});
编辑:我知道,您希望菜单的物理方向上升而不是下降。为此,您的菜单需要绝对位于底部。然后高度变化会使它们上升。
示例: http://jsfiddle.net/BKLjs/
#menu ul ul {
display:none;
width:100%;
position:absolute;
left:0;
bottom: 40px;
background:#6a6a6a;
}
这是进一步减少代码:http://jsfiddle.net/BKLjs/2/
$("#menu > ul > li:has(ul)").hover(function(e) {
$(this).find("ul").stop(true, true)['slide' + (e.type === 'mouseenter' ? 'Down' : 'Up')]();
});
答案 2 :(得分:2)
http://jsfiddle.net/SebastianPataneMasuelli/LDQfW/10/
注意:使用jquery UI:
.show("slide", { direction: "down" });
.hide("slide", { direction: "up" });