2013-03-18 65 views
7

我在html中有一個列表,我將其格式化爲CSS中的下拉菜單,但是,當我將鼠標懸停時,只有文本的前半部分響應反對它的整個長度,並且我無法弄清楚爲了使這個懸停區域更長而改變哪個屬性。如何使CSS中的懸停區域更大

謝謝!

代碼:

#navbar { 
    position: relative; 
    margin: 10px; 
    margin-left: -27px; 
    /*height: 13px; */ 
    float: left; 
} 

#navbar li { 
    list-style: none; 
    float: left; 
} 

#navbar li a { 
    display: block; 
    padding: 3px 8px; 
    background-color: #00AA63; 
    color: #fff; 
    text-decoration: none; 
} 

#navbar li ul { 
    color: #fff; 
    display: none; 
    width: 10em; 
} 

#navbar li:hover ul { 
    display: block; 
    position: absolute; 
    margin: 0; 
    padding: 0; 
    /*width: 200%;*/ 
} 

#navbar li:hover li { 
    float: none; 
    /*width: 200%;*/ 
} 

#navbar li:hover li a { 
    background-color: #00AA63; 
    color: #fff; 
    border-bottom: 1px solid #fff; 
    color: #fff; 
} 

#navbar li li a:hover { 
    color: #fff; 
    background-color: #33BB96; 
} 

jQuery的東西:

document.getElementById("menu").innerHTML += '<ul id="navbar">' 
    + '<li><a href="#">other electives</a>' 
    + '<ul id="navbar">' 
    +  '<li><a href="#">Subitem One</a></li>' 
    +  '<li><a href="#">Second Subitem</a></li>' 
    +  '<li><a href="#">Numero Tres</a></li></ul>' 
    + '</li>' 

編輯: 實現: http://jsfiddle.net/CLVwv/1/

+0

請分享您的代碼,或者更好的做法是讓http://jsfiddle.net/複製您的問題。 – 2013-03-18 21:43:51

+0

無代碼=無幫助! – 2013-03-18 21:44:02

+0

對不起,第一次在這裏問一個問題,代碼現在在這裏! – TheLaurens 2013-03-18 21:47:23

回答

5

的問題是因爲你已對每個ul設置負值保證金。

只需從.navbar中刪除填充並減少邊距以獲得所需的間距。

.navbar { 
    position: relative; 
    margin: 10px 1px; 
    /*height: 13px; */ 
    float: left; 
    padding-left: 0px; 
} 

您還可以通過刪除ID標籤和使用.navbar類減少你CSS,這也將使得你的代碼更加靈活,因爲你不必每次要加一個時間添加任何新的CSS項菜單:

.navbar { 
    position: relative; 
    margin: 10px 1px; 
    /*height: 13px; */ 
    float: left; 
    padding-left: 0px; 
} 

.navbar li { 
    list-style: none; 
    overflow: hidden; 
} 


.navbar li a { 
    display: block; 
    padding: 3px 8px; 
    background-color: #00AA63; 
    color: #fff; 
    text-decoration: none; 
} 

.navbar li ul { 
    color: #fff; 
    display: none; 
    width: 10em; 

} 

.navbar li:hover ul { 
    display: block; 
    position: absolute; 
    margin: 0; 
    padding: 0; 
    /*width: 200%;*/ 
} 

.navbar li:hover li { 
    float: none; 
    /*width: 200%;*/ 
} 

.navbar li:hover li a { 
    background-color: #00AA63; 
    color: #fff; 
    border-bottom: 1px solid #fff; 
    color: #fff; 
} 

.navbar li li a:hover { 
    color: #fff; 
    background-color: #33BB96; 
} 

HTML:

<ul class="navbar"> 
    <li><a href="#">other electives</a> 
     <ul class="navbar"> 
      <li><a href="#">Subitem One</a></li> 
      <li><a href="#">Second Subitem</a></li> 
      <li><a href="#">Numero Tres</a></li></ul> 
    </li> 
</ul> 
<ul class="navbar"> 
    <li><a href="#">other electivesother electives</a> 
     <ul class="navbar"> 
      <li><a href="#">Subitem One</a></li> 
      <li><a href="#">Second Subitem</a></li> 
      <li><a href="#">Numero Tres</a></li></ul> 
    </li> 
</ul> 
<ul class="navbar"> 
    <li><a href="#">other electives</a> 
     <ul class="navbar"> 
      <li><a href="#">Subitem One</a></li> 
      <li><a href="#">Second Subitem</a></li> 
      <li><a href="#">Numero Tres</a></li></ul> 
    </li> 
</ul> 

一個可行的解決方案見http://jsfiddle.net/georeith/CLVwv/2/

+0

謝謝!太棒了!將解決這些問題,我認爲我現在應該可以解決它:D非常感謝,這個網站真棒! – TheLaurens 2013-03-18 22:29:02

+0

@TheLaurens沒問題。使用已接受的答案代碼時要小心,因爲它會多次重複使用相同的ID,並且是無效的HTML。確保將它們轉換爲類。 – 2013-03-18 22:31:25

+0

我會的!我有更多的代碼,所以複製粘貼不會起作用! (儘管感謝你的提升,可能會給我帶來一些麻煩) – TheLaurens 2013-03-18 22:33:21

3

發生的事情是,因爲你必須在UL的負利潤率的原因。 ul#navbar2覆蓋#navbar1和#navbar3覆蓋#navbar2。

是否有理由需要三個獨立的ul?如果您使用以下HTML問題得到解決:

<ul id="navbar"> 
    <li><a href="#">other electives</a> 
     <ul class="navbar"> 
      <li><a href="#">Subitem One</a></li> 
      <li><a href="#">Second Subitem</a></li> 
      <li><a href="#">Numero Tres</a></li></ul> 
    </li> 

    <li><a href="#">other electivesother electives</a> 
     <ul class="navbar"> 
      <li><a href="#">Subitem One</a></li> 
      <li><a href="#">Second Subitem</a></li> 
      <li><a href="#">Numero Tres</a></li></ul> 
    </li> 

    <li><a href="#">other electives</a> 
     <ul class="navbar"> 
      <li><a href="#">Subitem One</a></li> 
      <li><a href="#">Second Subitem</a></li> 
      <li><a href="#">Numero Tres</a></li></ul> 
    </li> 
</ul> 

我還添加了一個3像素的邊距來#navbar李:

#navbar li { 
    list-style: none; 
    float: left; 
    padding-right: 3px; 
} 

見琴:http://jsfiddle.net/2wFjA/1/

+0

小提琴不工作;)但我想我明白你的意思,我不知道,我想一個ul就足夠了?我只是想要更多我所擁有的東西,所以我複製了它,還沒有編碼很多網絡事物;) – TheLaurens 2013-03-18 22:21:23

+0

oops。我有錯誤的小提琴網址。我把你的分叉了。我編輯了新的。 – 2013-03-18 22:24:26

+0

謝謝,太棒了! – TheLaurens 2013-03-18 22:28:16