我的菜单出现了新问题。
我想在鼠标位于子节点时保持父级悬停效果处于活动状态。
我知道我可以使用jQuery吗?但如果可能的话,我真的想把它保存在CSS中。
并且无需为所有元素提供唯一的ID ...
答案 0 :(得分:8)
答案 1 :(得分:2)
如果你想只使用CSS,我强烈推荐你,你必须稍微改变你的标记。
当您在:hover
的父级(a
)li
上检查a
时,当您进入子菜单时,该:hover
仍将显示在ul#nav li > a {
/* all the normal state styling here */
}
ul#nav li:hover > a {
/* hover state styling here */
}
上。
基本上我们这样做:
a
我们会将li
扩展为li
的维度。所以a
似乎表现得像li
。唯一的区别是,a
是ul
的父级和子菜单<ul id="nav">
<li>
<a href="#test">Test</a>
<ul>
<li>
<a href="#test/sub">Sub</a>
</li>
</ul>
</li>
<li>
<a href="#test">Test</a>
<ul>
<li>
<a href="#test/sub">Sub</a>
</li>
</ul>
</li>
</ul>
。
HTML保持不变:
ul#nav > li {
padding: 0;
margin: 0;
float: left;
position: relative;
}
ul#nav li > a {
height: 30px;
min-width: 80px;
padding: 0;
margin: 0;
border-right: 1px solid #CCC;
border-left: 1px solid #CCC;
display: block;
background: #000;
color: #FFF;
text-align: center;
line-height: 30px;
white-space: nowrap;
}
ul#nav li:hover > a {
background: #FFF;
color: #000;
}
ul#nav > li ul {
display: none;
position: absolute;
}
ul#nav > li:hover ul {
display: block;
}
ul#nav > li ul li {
display: block;
}.
CSS更改:
{{1}}
答案 2 :(得分:0)
您不能使用CSS影响父项;你需要使用JavaScript。如果您不喜欢ID,可以使用jQuery的相对选择器.parent()
,.next()
等。