2013-03-14 49 views
2

我有一個水平菜單,它是純HTML,CSS和Jquery。所有的菜單都很完美,但菜單的設計有一個非常愚蠢的分隔符,這給我帶來了問題。無論如何,它甚至可以使用懸停菜單上的CSS來覆蓋其他菜單項之間的分隔符?是否可以在菜單上懸停背景以覆蓋另一個菜單項?

這是菜單:enter image description here

這是懸停:enter image description here

這就是問題所在:enter image description here

  • 非常重要的!菜單是動態的(我不能讓每一個給定的寬度)
  • 分隔符h.line是一個* .png文件
  • 所有菜單是純HTML,CSS和Jquery(問題只在CSS),沒有菜單圖像背景,圖像,只有 '分隔線'

CSS代碼(我只是想在這部分的問題):

.white ul.mega-menu li { 
    float: left; 
    margin: 0; 
    padding: 0; 
    text-transform: uppercase; 
} 
.white ul.mega-menu li a { 
    float: left; 
    display: block; 
    color: #47515c; 
    padding: 0px 15px; 
    text-decoration: none; 
    border-left: 1px solid #fff; 
    background: url(../images/top_menu_separate.png) no-repeat right; 


} 
.white ul.mega-menu li a.dc-mega {position: relative;} 
.white ul.mega-menu li.mega-hover a, .white ul.mega-menu li a:hover { 
    color: #47515c; 
    background: #dadcde; 
    border-left: 1px solid #dadcde; 
    padding-bottom: 0px; 
    z-index: 5000000; 
    overflow: visible; 

} 

HTML:

  <div class="white"> 
       <ul id="mega-menu-9" class="mega-menu"> 
        <li><a href="test.html" class="multi">Expertise</a></li> 
        <li><a href="test.html">About us</a></li> 
        <li><a href="#">Our People</a></li> 
        <li><a href="#">Our work</a></li> 
        <li><a href="#">Candidates</a></li> 
        <li><a href="#">Careers</a></li> 
        <li><a href="#">Contact us</a></li> 
       </ul> 
      </div> 

我想這是方法:

.white ul.mega-menu li:hover 
{ 
    border-left: 1px solid #dadcde; 
    margin-left: -1px; 
} 

唯一的問題是,當懸停它移動所有的菜單從右邊到左邊由1px的,它看起來廢話...有一招?

+0

可以告訴你一些HTML太? – 2013-03-14 17:56:09

+0

是的,沒有問題!只需一秒 – AndrewS 2013-03-14 17:56:54

+0

更多的CSS?這似乎並沒有重新創建問題 – 2013-03-14 17:59:15

回答

1

我在jsFiddle中重新創建了這個問題。

的jsfiddle:http://jsfiddle.net/gkgUj/

解決方案:

li:hover + li a { 
    border-left: 0 none; 
    margin-left: 1px; 
} 

你的情況,添加此

.white ul.mega-menu li:hover + li a { 
    background-image: none; 
} 
+0

感謝您的回答。但它沒有幫助,它只在左邊添加了一個白色邊框..並且沒有任何變化 – AndrewS 2013-03-14 17:56:25

+0

@AndrewS更新回答 – 2013-03-14 18:06:54

+0

讓我解釋一下:menu1 | menu2 |。當我懸停「menu2」時,我只改變了menu2的背景,但是MENU1有這個「|」不會改變的分隔符 – AndrewS 2013-03-14 18:11:40

0

一種選擇是由一個像素懸停的項目左移以覆蓋分離器:

.white ul.mega-menu li:hover 
{ 
    border-left: 1px solid #dadcde; 
    margin-left: -1px; 
} 

另一種選擇是放置在每個項目的左側的分隔符,然後用白色邊框取代它時,它的左邊項徘徊:

.white ul.mega-menu li 
{ 
    background: url(../images/top_menu_separate.png) no-repeat left; 
} 

.white ul.mega-menu li:hover + li 
{ 
    background: none; 
    border-left: 1px solid #fff; 
} 
+0

第一個解決方案是wroking,但我也嘗試過,問題是,當懸停mrnu菜單項移動1px。這不是專業。 – AndrewS 2013-03-14 18:07:53

+0

「border-left」屬性旨在抵消「margin-left」移位,並防止菜單項和文本在徘徊時發生移位。如果你無法做到這一點,我建議以不同的方式實施分離器,從一開始就避免這個問題。 – benfarhner 2013-03-14 18:26:03