2009-08-21 89 views
0

下面的下拉菜單在現代瀏覽器(IE7/firefox)中工作正常,但在IE6中不起作用。有人可以提出修復方案嗎?下拉菜單在IE6中不起作用

CSS:

#menu { 
    height: 29px; 
    background: url(img/menu.png) repeat-x top; 
    border-left: 1px solid #0b2f3e; 
    border-right: 1px solid #0b2f3e; 
    position: relative; 
} 

#menu ul { 
    display: none; 
    position: absolute; 
    top: 29px; 
    left: 0; 
    background: #316f86; 
    width: 220px; 
    z-index: 10; 
} 

#menu ul ul { 
    top: -1px; 
    left: 220px; 
    width: 200px; 
    border: 1px solid #4a7a8c; 
    border-bottom: none; 
} 

#menu li { 
    float: left; 
    display: block; 
    position: relative; 
} 

#menu li li { 
    float: none; 
} 

#menu li a { 
    float: left; 
    display: block; 
    color: #fff; 
    height: 16px; 
    line-height: 16px; 
    padding: 7px 20px 6px 20px; 
    border-right: 1px solid #0b2f3e; 
} 

#menu ul li a { 
    float: none; 
    border-right: none; 
    border-bottom: 1px solid #4a7a8c; 
} 

#menu li a:hover { 
    border-bottom: none; 
} 

#menu ul li a:hover { 
    color: #c0e8ff; 
    border-bottom: 1px solid #4a7a8c; 
} 

.menu-bottom { 
    background: url(img/menu.png) repeat-x bottom; 
} 

.menu-top { 
    background: url(img/menu.png) repeat-x top; 
} 

#menu li:hover ul ul, #menu li:hover ul ul ul, #menu li:hover ul ul ul ul{ 
display:none; 
} 
#menu li:hover ul, #menu li li:hover ul, #menu li li li:hover ul, #menu li li li li:hover ul{ 
display:block; 
} 

#menu img { 
    vertical-align: middle; 
    overflow: hidden; 
    width: 16px; 
    height: 16px; 
    margin: 0 8px 0 0; 
} 

的jQuery:(應該是用jQuery沒問題)

// dropdown menu (unlimited sub-levels) 
jQuery("#menu ul").css({display: "none"}); // Opera Fix 

jQuery("#menu li").hover(
    function(){ 
     if (jQuery(this).parent().attr("id") == 'menu') { 
      jQuery(this).removeClass('menu-top'); 
      jQuery(this).addClass('menu-bottom'); 
     } 
     jQuery(this).find('ul:first').css({visibility: "visible",display: "none"}).fadeIn(500); 

    }, 
    function(){ 
     if (jQuery(this).parent().attr("id") == 'menu') { 
      jQuery(this).removeClass('menu-bottom'); 
      jQuery(this).addClass('menu-top'); 
     } 
     jQuery(this).find('ul:first').css({visibility: "hidden"}); 
    } 
); 

我相信它的東西與IE6如何處理花車/ blocks..but就不能得到它的竅門。

+0

你能嘲笑它在jsbin.com或pastebin.me – redsquare 2009-08-21 14:59:14

回答

3

爲什麼要重新發明輪子。良好的菜單系統是superfish或su魚。嘗試和IE6等測試

+0

我重新發明輪子,因爲我想開發我自己的版本。它比自定義預製菜單更容易。我也需要它在jQuery中。問題是,當我刪除浮動:離開#menu李{}它出現..所以這個問題是不是在jQuery ..它只是浮動:左..但它看起來很難看,當它被刪除 – 2009-08-21 15:44:24

+0

調整超級/ suckerfish菜單是如果你理解css,那麼微不足道。 – 2010-08-23 03:20:06

+0

其實你應該保持浮動:左邊;並添加顯示:內嵌 – albert 2010-12-31 09:36:26

1

這是值得考慮看看斯圖尼科爾的CSS Play網站,他menu秒Page持有幾十個例子,其中有許多是跨瀏覽器兼容,包容IE6的。

0

嘗試使用代替懸停

jQuery("#menu li").hover -> jQuery("#menu li").live("hover", function() 

它可能會解決與懸停問題在IE6中沒有被解僱

0

感謝所有的jQuery的活法。我設法解決該CSS,並使其與IE6工作:)

在這裏,它只是萬一任何人需要它。

#menu, #menu ul { 
    position: relative; 
    z-index: 300; 
    width: 100%; 
} 

#menu { 
    height: 29px; 
    background: url(img/menu.png) repeat-x top; 
    border-left: 1px solid #0b2f3e; 
    border-right: 1px solid #0b2f3e; 
} 

#menu ul { 
    width: 230px; 
    position: absolute; 
    display: none; 
    top: 29px; 
    left: 0; 
    background: #316f86; 
} 

#menu ul ul { 
    width: 232px; 
    top: -1px; 
    left: 230px; 
    background: #316f86; 
    border: 1px solid #4a7a8c;border-bottom: none; 
} 

#menu li { 
    float: left; 
    position: relative; 
} 

#menu a { 
    display: block; 
    padding: 9px 20px 8px 20px; 
    color: #fff; 
    border-right: 1px solid #0b2f3e; 
} 

#menu li ul a { 
    float: left; 
    height: auto; 
    border-right: none; 
    border-bottom: 1px solid #4a7a8c; 
    width: 190px; 
} 

#menu li a:hover { 
    border-bottom: none; 
} 

#menu li ul a:hover { 
    color: #c0e8ff; 
    border-bottom: 1px solid #4a7a8c; 
} 

.menu-bottom { 
    background: url(img/menu.png) repeat-x bottom; 
} 

.menu-top { 
    background: url(img/menu.png) repeat-x top; 
} 

#menu li:hover ul ul, #menu li:hover ul ul ul, #menu li:hover ul ul ul ul {display:none;} 
#menu li:hover ul, #menu li li:hover ul, #menu li li li:hover ul, #menu li li li li:hover ul {display:block;} 

#menu img { 
    vertical-align: middle; 
    overflow: hidden; 
    width: 16px; 
    height: 16px; 
    margin: 0 8px 0 0; 
} 
+0

@ redsquare的解決方案是正確的,傳下去。當你認爲你「修復了CSS讓它在IE6中工作」時,jQuery實際上一直在這樣做;無論你「修正」了什麼,只要你做了一些修改就看起來很正確。 :懸停在IE6中的以外的任何元素上都不起作用。這就是爲什麼htmldog花費了x-many小時開發suckerfish下拉菜單,以便跨瀏覽器兼容,特別適用於IE6。爲什麼@redsquare說你不需要重新發明輪子。 – albert 2010-12-31 09:31:29