2

我正在寻找一个简单的嵌套导航菜单,在悬停时水平向左“滑动”或“飞出”。我认为实现这一点的唯一方法是使用 jQuery,所以我一直在玩它。

初始状态

在此处输入图像描述

悬停状态

编辑:我意识到这张照片看起来有点不对劲。我希望整个 ul.sub-menu(即:PEOPLE & APPROACH)一起滑出,而不是按顺序滑出。

在此处输入图像描述

一般结构是:

<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-menu 淡入但在一条线上,并且由于浮动,一切都在跳跃。

有人可以指出我正确的方向吗?

4

1 回答 1

2

这就是你想要的吗?display:inline-block我相信你从你的 CSS中丢失了一个属性。通过使用内联块,具有该属性的每个元素都将保留块特征(宽度、高度等),但也保持内联(前后没有中断)。没有块部分,应用宽度修改是没有意义的。

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>
于 2012-12-06T03:33:12.773 回答