2013-03-18 15 views
7

Ich habe eine Liste in HTML, die ich als Dropdown-Menü in CSS formatieren, jedoch, wenn ich den Mauszeiger über, nur die erste Hälfte des Textes reagiert, als im Gegensatz zu der gesamten Länge, und ich kann nicht herausfinden, welche Eigenschaft zu ändern, um diese Hover-Bereich länger zu machen.Wie mache ich den Bereich von Hover in CSS größer

danke!

Code:

#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 stuff:

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>' 

edit: Umsetzung: http://jsfiddle.net/CLVwv/1/

+0

Bitte teilen Sie Ihren Code, oder noch besser, machen Sie eine http://jsfiddle.net/, um Ihr Problem zu replizieren. –

+0

Kein Code = keine Hilfe! –

+0

Entschuldigung, beim ersten Mal eine Frage hier stellen, der Code ist jetzt hier! – TheLaurens

Antwort

5

Das Problem ist, weil Sie haben eine negative Marge auf jedem ul gesetzt.

Entfernen Sie einfach die Polsterung von .navbar und reduzieren Sie den Rand, um den gewünschten Abstand zu erhalten.

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

Sie können auch Ihre CSS reduzieren, indem die ID-Tags zu entfernen und eine .navbar-Klasse, wird dies auch Ihren Code flexibler gestalten, wie Sie jedes Mal, wenn Sie irgendwelche neuen CSS nicht hinzufügen müssen wollen ein hinzufügen Artikel zum Menü:

.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> 

Siehe http://jsfiddle.net/georeith/CLVwv/2/ für eine funktionierende Lösung.

+0

danke! das ist fantastisch! Ich werde mich mit diesen Antworten herumschlagen und ich denke, ich sollte es jetzt beheben können: D vielen Dank, diese Seite ist großartig! – TheLaurens

+0

@TheLaurens Kein Problem. Seien Sie vorsichtig mit dem Code für akzeptierte Antworten, da dieselbe ID mehrmals verwendet wird und es sich um ungültiges HTML handelt. Stellen Sie sicher, dass Sie sie in Klassen konvertieren. –

+0

werde ich! Ich habe etwas Code mehr, also kopiere das Einfügen sowieso nicht! (Danke für das Heads-Up, vielleicht hat er mir Probleme gemacht) – TheLaurens

3

Der Grund, dass wegen der negativen Margen Sie auf den UL haben passiert ist. ul # navbar2 deckt # navbar1 ab und # navbar3 deckt # navbar2 ab.

Gibt es einen Grund, warum Sie drei separate ULs benötigen? Wenn Sie die folgende HTML verwenden das Problem behoben ist:

<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> 

Ich habe auch eine 3px padding li #navbar:

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

die Geige Siehe: http://jsfiddle.net/2wFjA/1/

+0

die Geige funktioniert nicht;) aber ich denke, ich verstehe, was du meinst, und ich weiß nicht, ich nehme an, eine ul wäre genug? Ich wollte nur mehr von dem, was ich hatte, also kopierte ich es, habe noch nicht viele Web-Sachen codiert;) – TheLaurens

+0

oops. Ich hatte die falsche Geige URL. Ich habe dich gegabelt. Ich habe mit dem Neuen geschnitten. –

+0

danke, das ist großartig! – TheLaurens