Вы можете использовать дочерний селектор E > F
в качестве решения вашей проблемы следующим образом:
div.green_colour > div.has_colour{
background-color: green;
}
div.red_colour > div.has_colour{
background-color: red;
}
Согласно этому графику http://www.quirksmode.org/css/contents.html он совместим со всеми основными браузерами и IE 7 +
Существуют и другие способы реализации вышеуказанного решения (например, с помощью javascript), если вы заинтересованы.
- Изменить:
Я не уверен на 100%, если причина, по которой ваше решение не работает, связана с тем, что браузеры анализируют CSS справа налево, а не слева направо, но я предполагаю, что это как-то связано с этим. Кто-нибудь, пожалуйста, поправьте меня, если я ошибаюсь.