我有一个这样的嵌套列表:
<ul class="tree">
<li><div>Animals</div>
<ul>
<li><div>Birds</div>
<ul>
<li class="last"><div>Eagle</div></li>
</ul>
</li>
<li><div>Mammals</div>
<ul>
<li><div>Elephant</div></li>
<li class="last"><div>Cats</div>
<ul>
<li><div>Lion</div></li>
<li class="last"><div>Tiger</div></li>
</ul>
</li>
</ul>
</li>
<li class="last"><div>Reptiles</div>
<ul>
<li><div>Snake</li>
<li class="last"><div>Turtle</div></li>
</ul>
</li>
</ul>
</li>
</ul>
我想设置这样的样式,以便每个级别都缩进,但我也希望在悬停时突出显示每一行。当我将鼠标悬停在 上DIV
时,突出显示仅从包含的左侧位置开始UL
:
ul.tree, ul.tree ul {
list-style-type: none;
}
ul.tree li div:hover {
background-color: red;
}
有没有什么方法可以达到我想要的效果,而无需为 , 等定义多个li li
规则li li li
?嵌套层数可能是无限的,所以我觉得定义所有这些不同的规则非常难看。
或者有没有办法动态计算嵌套级别(在 CSS 中?),所以我可以删除填充,UL
而是在每个内部放置适量的填充DIV
?
更新:
添加了一个显示我想要的小提琴:http: //jsfiddle.net/za3db/
你可以看到它只在第二级缩进,因为我没有定义第三级或第四级的规则......