У меня есть вложенный список, как это:
<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/
Вы можете видеть, что это только на втором уровне, потому что я не определил правило для третьего или четвертого...