我正在寻找一个简单的嵌套导航菜单,该菜单在悬停时会向左水平滑动或“飞出”。我认为实现此目标的唯一方法是使用jQuery,因此我一直在研究它。
初始状态
悬停状态
编辑:我意识到这张照片看起来有点不对劲。我希望整个ul.sub菜单(即“人员和方法”)一起滑出,而不是顺次滑出。
总体结构为:
<nav>
<ul>
<li>ABOUT
<ul class="sub-menu">
<li>PEOPLE</li>
<li>APPROACH</li>
</ul>
</li>
<li>PROJECTS</li>
<li>CONTACT</li>
</ul>
</nav>
我的jQuery是:
$("nav li").on('hover', function(){
$(this).children(".sub-menu").animate({width: 'toggle'});
});
目前我的李氏浮在水面上。
我的问题是,当我将鼠标悬停在父级LI上时,.sub菜单会淡入但在一行上,并且由于浮动而一切都在跳来跳去。
有人可以指出我正确的方向吗?
最佳答案
这就是你要的吗?我相信您在CSS中缺少display:inline-block
属性。通过使用内联块,具有该属性的每个元素将保留块特征(宽度,高度等),但仍保持内联(在前后没有中断)。如果没有块部件,则应用宽度修改没有任何意义。
CSS:
<style type='text/css'>
nav li {
display: inline;
list-style: none;
}
.sub-menu {
display: inline-block;
white-space: nowrap;
padding: 0;
margin: 0;
}
</style>
Javascript:
<script>
$(function() {
$('.sub-menu').hide();
$('.link').hover(
function() {
$('.sub-menu', this).stop().animate({
width: 'toggle',
opacity: 'toggle'
} /* [, duration in ms] */);
}
);
});
</script>
HTML:
<nav>
<ul>
<li class="link">ABOUT
<ul class="sub-menu">
<li>PEOPLE</li>
<li>APPROACH</li>
</ul>
</li>
<li class="link">PROJECTS
<ul class="sub-menu">
<li>ONE</li>
<li>TWO</li>
</ul>
</li>
<li>CONTACT</li>
</ul>
</nav>