簡體   English   中英

如果沒有足夠的空間,如何讓superfish菜單向后打開?

[英]How to make superfish menu open backward when there is not enough space?

如何讓superfish菜單向后打開? 我在fanpage頁面上將我的facebook應用程序嵌入了一個supperfish菜單,沒有足夠的空間讓菜單完全展開,因為它在iframe中運行。 如何通過使用superfis或任何其他jquery菜單插件解決此問題也很好。

謝謝。

目前的情況 目前的情況

預期的結果 預期的結果

@Updated:這是一個用戶定義的菜單,它沒有菜單級別的限制。

我知道這個問題很老,但僅供參考,這就是我修復上述問題的方法

var windowWidth;
$(document).ready(function (){
        windowWidth= $(window).width();
        $( window ).resize(function() {
            windowWidth = $(window).width();
        });

        $('.top-nav').superfish({
            onBeforeShow : function (){                 
                if(!this.is('.top-nav>li>ul')){
                    var subMenuWidth = $(this).width();
                    var parentLi = $(this).parent();                    
                    var parentWidth = parentLi.width();
                    var subMenuRight = parentLi.offset().left + parentWidth + subMenuWidth;
                    if(subMenuRight > windowWidth){
                        $(this).css({'left': 'auto', 'right': parentWidth+'px'});
                    } else {
                        $(this).css({'left': '', 'right': ''});
                    }
                }
            }
        });
 });

我寫了這個腳本來修復。 如果沒有足夠的空間,現在菜單會在左側而不是右側打開。

// 2/3/4th level menu  offscreen fix        
var wapoMainWindowWidth = $(window).width();

$('.sf-menu ul li').mouseover(function(){

    // checks if third level menu exist         
    var subMenuExist = $(this).find('.sub-menu').length;            
    if( subMenuExist > 0){
        var subMenuWidth = $(this).find('.sub-menu').width();
        var subMenuOffset = $(this).find('.sub-menu').parent().offset().left + subMenuWidth;

        // if sub menu is off screen, give new position
        if((subMenuOffset + subMenuWidth) > wapoMainWindowWidth){                  
            var newSubMenuPosition = subMenuWidth + 3;
            $(this).find('.sub-menu').css({
                left: -newSubMenuPosition,
                top: '0',
            });
        }
    }
 });
ul ul ul ul ul { right: 100%; }

這樣,4.子菜單之后的所有子導航都將定位在左側。

下一步是,在幾個UL之后重置此屬性,如下所示:

ul ul ul ul ul ul ul ul { right: auto; left: 100%; }

嘗試玩它。

我從來沒有開發過如此多的嵌套導航,但這個片段在其他情況下可能很有用。

希望這可以幫助。

在你的superfish.css中更改此類的left屬性:

ul.sf-menu li li:hover ul,
ul.sf-menu li li.sfHover ul {
    left:           10em;
    top:            0;
}

使左財產負面如下:

ul.sf-menu li li:hover ul,
ul.sf-menu li li.sfHover ul {
    left:           -12em;
    top:            0;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM