Jquery Superfish菜单 - 如何向上滑动?

时间:2010-04-23 09:34:44

标签: jquery slide superfish

这是superfish菜单插件的jquery代码(在我的一些修订之后)。我想添加一个效果(通过superfish或者偶然)会导致子菜单在mouseout上向上滑动(就像当你将鼠标悬停在菜单顶部时滑下来一样)。

jQuery("ul.sf-menu").supersubs({ 
        minWidth:    12,                                // minimum width of sub-menus in em units 
        maxWidth:    27,                                // maximum width of sub-menus in em units 
        extraWidth:  1                                  // extra width can ensure lines don't sometimes turn over 
                                                        // due to slight rounding differences and font-family 
    }).superfish({ 
        delay:       700,                               // delay on mouseout 
        animation:   {opacity:'show',height:'show'},    // fade-in and slide-down animation 
        speed:       'fast',                            // faster animation speed 
        autoArrows:  true,                             // disable generation of arrow mark-up 
        dropShadows: false                             // disable drop shadows
    }); 

4 个答案:

答案 0 :(得分:2)

你现在不能。直接从代码:

hideSuperfishUl : function(){
  var o = sf.op,
    not = (o.retainPath===true) ? o.$path : '';
  o.retainPath = false;
  var $ul = $(['li.',o.hoverClass].join(''),this).add(this).not(not).removeClass(o.hoverClass)
      .find('>ul').hide().css('visibility','hidden');
  o.onHide.call($ul);
  return this;
},
showSuperfishUl : function(){
  var o = sf.op,
    sh = sf.c.shadowClass+'-off',
    $ul = this.addClass(o.hoverClass)
      .find('>ul:hidden').css('visibility','visible');
  sf.IE7fix.call($ul);
  o.onBeforeShow.call($ul);
  $ul.animate(o.animation,o.speed,function(){ sf.IE7fix.call($ul); o.onShow.call($ul); });
  return this;
}

你可以看到show函数调用animate(),而hide函数只调用hide()。

答案 1 :(得分:1)

我不确定旧版本的超级鱼,但现在很容易实现(滑动和滑动) - 就像这样

$('...').superfish({
    hoverClass:    'sfhover',          // the class applied to hovered list items
    animation:     {height: "show", marginTop: "show", marginBottom: "show", paddingTop: "show", paddingBottom: "show"},   // an object equivalent to first parameter of jQuery’s .animate() method. Used to animate the submenu open
    animationOut:  {height: "hide", marginTop: "hide", marginBottom: "hide", paddingTop: "hide", paddingBottom: "hide"},   // an object equivalent to first parameter of jQuery’s .animate() method Used to animate the submenu closed
}); 

答案 2 :(得分:0)


但是,您可以通过破解代码来使其工作。我会提交补丁但代码开发不是公开托管的。

hideSuperfishUl : function(){
            var o = sf.op,
                not = (o.retainPath===true) ? o.$path : '';
            o.retainPath = false;
            var $ul = $(['li.',o.hoverClass].join(''),this)
                .add(this)
                .not(not)
                // .removeClass(o.hoverClass)
                .find('>ul').animate( {opacity: 'hide', height: 'hide'}, o.speed, function(){ sf.IE7fix.call($ul); o.onShow.call($ul); });
            o.onHide.call($ul);
            return this;
        },

答案 3 :(得分:-1)

实现隐藏超级鱼的任务的正确方法与显示相同:

hideSuperfishUl : function(){
        var o = sf.op,
        not = (o.retainPath===true) ? o.$path : '';
        o.retainPath = false;
        //hacked code by Farhan Wazir (Seejee)
    var $ul_p1 = $(['li.',o.hoverClass].join(''),this).add(this).not(not);
    var $ul_p2 = $ul_p1.find('>ul');
    var $ul = $ul_p2.animate( {opacity: 'hide', height: 'hide'}, o.speed,
        function(){ return $ul_p1.removeClass(o.hoverClass).find('>ul').css({top: '-99999em'}).addClass('sf-hidden');});
        o.onHide.call($ul);
        return this;
},