2013-03-18 52 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