我在html中有一个列表,我将其格式化为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 :(得分: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/。
答案 1 :(得分: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>
我还为#navbar li添加了3px填充:
#navbar li {
list-style: none;
float: left;
padding-right: 3px;
}
请参阅小提琴:http://jsfiddle.net/2wFjA/1/