1

これは、superfishメニュープラグインのjqueryコードです(私のいくつかの改訂後)。サブメニューがマウスアウトで上にスライドする(メニュートップにカーソルを合わせたときに下にスライドするのと同じように)効果を(スーパーフィッシュを介して、または偶然に)追加しようとしています。

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

4 に答える 4

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()を呼び出すことがわかります。

于 2011-01-28T21:03:10.573 に答える
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
}); 
于 2013-09-11T23:23:30.470 に答える
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;
        },
于 2012-12-11T02:42:49.363 に答える
-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;
},
于 2013-01-29T23:59:38.117 に答える