Приветствую всех! Сломал голову над решением на первый взгляд довольно простой задачи. Прошу помочь разобраться)
Суть в следующем. Есть 2 css класса: green и red. Требуется чтобы элементы дерева закрашивались по такой логике. Самые дальние (расположенные ниже по дереву) наследники имеют цвет ближайшего по иерархии родителя с установленным классом.
Для ясности покажу 2 примера html
В таком случае ссылки с текстом "3" и "2" должны быть окрашены в красный цвет, а ссылка с текстом "1" - в зеленый.
<ul>
<li class="green">
<a href="">1</a>
<ul>
<li class="red">
<a href="">2</a>
<ul>
<li>
<a href="">3</a>
</li>
....
</ul>
</li>
</ul>
</li>
</ul>
В таком случае ссылки с текстом "3" и "2" должны быть окрашены в зеленый цвет, а ссылка с текстом "1" - в красный.
<ul>
<li class="red">
<a href="">1</a>
<ul>
<li class="green">
<a href="">2</a>
<ul>
<li>
<a href="">3</a>
</li>
....
</ul>
</li>
</ul>
</li>
</ul>
Вот примерный css:
<style>
.green a { background-color: green }
.red a { background-color: red}
</stype>
Сейчас закрашивание элементов зависит от порядка строк в css, возможно ли как-то сделать так, чтобы закрашивание зависело не от порядка строк в css, а от иерархии html дерева (с учетом описанной логики)?
Вынес сюда для удобства ответы на вопросы из комментариев:
1. Количества цветов может быть не обязательно 2, может быть и больше
2. В дереве может быть много уровней вложенности, причем пользователь сразу же видит не всю структуру, а она динамически подгружается по мере его раскрытия
3. Нельзя использовать inline стили в html
4. Можно использовать js
Благодарю за внимание! Буду очень благодарен за помощь))