2013-04-26 42 views
0

所以我在一個以外包裝爲中心的div中有一個圖像。我在包裝的頂部有一個水平菜單,內嵌5個子div。我添加了css,當您將鼠標懸停在5個內聯子div中的第一個上時,會出現一個下拉菜單。當下拉菜單出現時,它會使圖像向右移動,而我不能爲了我的生活找出如何糾正它。正如你所看到的,我已經玩過z-index,但我不確定我是否理解z-index正在發生或未發生什麼,以及它是如何正確使用的。當下拉菜單出現時,div向右移動

HTML:

<div class="wrapper"> 
    <div id="topmenu"> 
     <div id="home"><a href="index.html">Home</a> 
      <ul> 
       <li>item 1</li> 
       <li>item 2</li> 
       <li>item 3</li> 
      </ul> 
     </div> 
    </div> 

    <div id="logo"> 
     <img src="image.jpeg" /> 
    </div> 
</div> 

CSS

.wrapper{ 
    position:relative; 
    width:960px; 
    height:905px; 
    margin-top:5px; 
    margin-left:auto; 
    margin-right:auto; 
    /*text-align:left; 
    border:2px solid red;*/ 
    background-color:#FFFFFF; 
} 

#topmenu{ 
    position:relative; 
    border-bottom:2px solid #164207; 
    height:30px; 
    background-color:#ffffff; 
    z-index:3; 
} 

#logo{ 
    position:relative; 
    border-bottom:2px solid #164207; 
} 


#logo img{ 
    position:relative; 
    height:350px; 
    width:500px; 
    z-index:1; 
} 

#home{ 
    display:inline-block; 
    float:left; 
    margin-top:5px; 
    margin-left:15px; 
    width:169px; 
    color:#164207; 
    font-family:serif; 
    font-weight:bold; 
    font-size:20px; 
    text-align:center; 
    border-right:2px solid #164207; 
} 

#home:hover .sub-menu {display:inline-block;} 

.sub-menu { 
    overflow:hidden; 
    display: none; 
    width: 169px; 
    background-color: #164207; 
    color:#FFFFFF; 
    margin-top: 5px; 
    border: 1px solid #fff; 
    -webkit-box-shadow: 0px 13px 25px rgba(0,0,0, 0.2); 
    -moz-box-shadow: 0px 13px 25px rgba(0,0,0, 0.2); 
    box-shadow: 0px 13px 25px rgba(0,0,0, 0.2); 
} 

.sub-menu li { 
    position:relative; 
    list-style-type: none; 
    display: block; 
    border-bottom: 1px solid #FFFFFF /*#eaeaea*/; 
    font-family:serif; 
    font-size: 12px; 
    height: 15px; 
    padding: 8px 0; 
} 
+1

如果你犯了一個[jsfiddle.net(http://jsfiddle.net)來證明這個問題,特別是如果有一個視覺上的「轉移」這將是真正的幫助。這樣做可以幫助社區做出迴應。歡迎來到SO。 =) – jmbertucci 2013-04-26 21:47:55

+0

好的,謝謝你的建議 - 我一定會這麼做的。 – 2013-04-26 21:51:12

+0

這裏是jsfiddle - 希望這有助於。 http://jsfiddle.net/jwdev/4ZTuB/em – 2013-04-26 23:06:34

回答

1

您需要添加position: absolute;.sub-menu創建堆疊環境。

jsFiddle

#home{ 
    display:block; 
    float:left; 
    margin-top:5px; 
    width:184px; 
    color:#164207; 
    font-family:serif; 
    font-weight:bold; 
    font-size:20px; 
    text-align:center; 
    border-right:2px solid #164207; 
} 

#home:hover .sub-menu {display:block;} 
#course:hover .sub-menu{display:block;} 
#leagues:hover .sub-menu{display:block;} 
#events:hover .sub-menu{display:block;} 
#about:hover .sub-menu{display:block;} 

    .sub-menu { 
     overflow:hidden; 
     display: none; 
     width: 182px; 
     background-color: #164207; 
     color:#FFFFFF; 
     /*padding: 10px 10px; 
     margin-left: 0px;*/ 
     margin-top: 5px; 
     border: 1px solid #fff; 
     -webkit-box-shadow: 0px 13px 25px rgba(0,0,0, 0.2); 
     -moz-box-shadow: 0px 13px 25px rgba(0,0,0, 0.2); 
     box-shadow: 0px 13px 25px rgba(0,0,0, 0.2); 
     position:absolute; /**************************** Important Bit*/ 
     top:24px; 
    } 

重新調整alignment-上所有的人都卸下margin-left:15px;#home#course#leagues#events,並且#about和調整寬度。然後調整.sub-menu的寬度。有關詳細信息和工作模型,請參閱上面更新的jsFiddle。

Example with navigation set up in <ul> unordered list </ul>. - Don't Need all the id's and resulting redundant CSS.

+0

很酷謝謝!這絕對可以解決主要問題,但是這會導致子菜單偏離右側。有沒有辦法移動子菜單,直接下降到它上面的div下面? – 2013-04-27 12:39:03

+0

@J_W是否有理由使用每個菜單項的特定ID? – apaul 2013-04-27 16:16:17

+0

沒有理由 - 我對網絡開發很陌生,這是我的第一個「項目」,所以我打開任何改善HTML和CSS的建議。 – 2013-04-27 17:16:19