【问题标题】:Jquery Animation MenuJquery 动画菜单
【发布时间】:2014-08-25 03:08:31
【问题描述】:

我为菜单背景制作了一个 jQuery 动画。菜单有一个下拉菜单,当您将鼠标悬停在菜单上时,动画就会启动,但下拉菜单开始表现得很不稳定。 jquery 很新,所以不知道为什么这样做。

我添加了一个具有绝对位置的 div (menu-bg) 以更改悬停在菜单内的高度。

这是我的 javascript 控制动画:

 $('.navbar-nav >li > a').hover(
    function() {
        $(this).stop().next().animate({
            height: "60px"
        }, {
            easing: "swing",
            queue: true,
            duration: 400
        });
    },
    function() {
        $(this).stop().next().animate({
            height: "0px"
        }, {
            easing: "swing",
            queue: true,
            duration: 200
        });
    });

这是查看实际问题的网站链接,当您将鼠标悬停在主页上时会注意到它。

http://bratworks.com/static

【问题讨论】:

    标签: javascript jquery html css animation


    【解决方案1】:

    我发现您的代码中的以下更改完成了工作:

    在 init.js 的第 15 行附近,从下拉菜单 fadeOut() 中移除 200 毫秒的延迟。

    $(this).find('.dropdown-menu').stop(true, true).delay(0).fadeOut();
    

    我重写了你的悬停函数来定位li而不是a,看起来那里有某种冲突:

    $('.navbar-nav > li').on({
     mouseenter: function() {;
        $(this).find('.menu-bg').animate({ height: "60px" });
      }, 
     mouseleave: function() {
        $(this).find('.menu-bg').animate({ height: "0px" });
       }
     });
    

    最后,我覆盖了在 .dropdown-menu 上创建 5px 边距间隙的 CSS:

    .dropdown-menu {
      margin-top:0px!important;
    }
    

    给你!如果您希望我扩展任何内容,请告诉我?

    【讨论】:

    • 太棒了!这在大多数情况下都有效,必须进行一些更改才能处理移动菜单。一个问题,你为什么改变悬停功能?我是否错误地使用了悬停功能?
    • hover 方法将处理程序绑定到 mouseenter 和 mouseleave 事件 - 没有真正的区别,您的悬停功能很好!我想我在做实验,只是忘了把它改回来。 :) 如果我的回答令人满意,如果你也给我投票,我将不胜感激。祝您度过愉快的一周!
    • 太棒了!谢谢,很遗憾我不能投票,但一旦我达到 15 级,我一定会回来投票。我确实将其标记为正确。再次感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-17
    • 2011-12-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多