这个问题在这里已有答案:
我有一个简单的HTML无序列表 .
<ul>
<li>Item 1</li>
<li>
Group 1
<ul>
<li>Item 2</li>
<li>Item 3</li>
</ul>
</li>
</ul>
当鼠标位于Item或Group上时,我想使用CSS来产生一个简单的效果 .
li:hover
{
background-color:#ff0000;
}
它对“组1”或“项目1”(不包含在组中)非常好 - 当我将鼠标移动到颜色变化上时 . 但是,如果我移动“第2项”或“第3项”,“第1组”也会保持高亮显示(红色背景) . 在这种情况下,我只想强调“第2项”或“第3项” .
有谁知道如何做到这一点?
谢谢你的帮助!
===============================编辑
<ul>
<li>Item 1</li>
<li>
Group 1
<ul>
<li>Item 2</li>
<li>Group 2
<ul>
<li>Item 3</li>
<li>Item 4</li>
</ul>
</li>
</ul>
</li>
</ul>
鼠标悬停在xxx上应突出显示yyy
xxx - > yyy
第1项 - >第1项
Group1 - > Group1,Item2,Group2,Item3,Item4
第2项 - >第2项
Group2 - > Group2,Item3,Item4
第3项 - >第3项
Item4 - > Item4
请参阅http://image-upload.de/image/r76d79/1c7af56a19.png,只是一个快速绘图 .
5 回答
这个解决方案不是纯粹的HTML / CSS,但它可以工作 . 它使用Javascript库jQuery .
http://jsfiddle.net/XP3Vp/
把它放在页面的头部:
如果您不希望在将光标移动到
Group 1
上时突出显示基础列表项,请使用此选项:http://jsfiddle.net/CwhhN/在jQuery文档中找到可能是最好的解决方案 . http://api.jquery.com/event.stopPropagation/
您可以做的最好的事情是着色
ul
..像这样的东西http://jsfiddle.net/gaby/DxsDa/虽然它仍然会突出
group 1
文本..或者你可以使用无效的HTML,但我不建议明显的原因.. http://jsfiddle.net/gaby/DxsDa/1/
使用UL元素的类或id(它是突出显示的li的父级)和直接子选择器:
它将修复发生的错误,因为你试图突出显示每个li的元素:)
Group 1
包含Item 2
. 所以,当你徘徊Item 2
时,你也在徘徊Group 1
.因此,如果没有错误地格式化HTML,那么使用CSS无法实现 .
有了JS,你可以到达那里 .
如果这是可以接受的,请参阅@RobinJ's answer .