Ну, во-первых, если вы хотите поддерживать IE6, вам понадобится Javascript некоторого описания, потому что этот браузер поддерживает только псевдоэлемент :hover
на якорях (ссылки, т.е. теги <a>
).
Другая проблема заключается в том, что для этого вам понадобится дочерний селектор CSS, что опять-таки не поддерживается в IE6.
Итак, версия, не совместимая с IE6:
table.Content:hover > tbody > tr > td.ContentIndent { background: #AAA; }
Обратите внимание на элемент <tbody>
, который создается неявно.
Без дочернего (>) селектора это выражение:
table.Content td.ContentIndent { ... }
будет захватывать каждую ячейку отступа, поскольку она называется селектором потомков, а таблица содержимого верхнего уровня является родительской для всех них.
Вы можете обойти эту проблему следующим образом:
table.Content:hover td.ContentIndent { background: #AAA; }
table.Content:hover table.Content td.ContentIndent: background: #FFF; }
Второй в основном устраняет эту проблему, возвращая более глубокие отступы к нормальному форматированию. Это довольно стандартная методика для решения некоторых проблем IE6, которые могут быть решены с помощью дочернего селектора, но не всегда возможно или практично возвращать стили таким образом.
Для поддержки IE6 я бы порекомендовал библиотеку Javascript. Мой предпочтительный вариант - jQuery, который будет включать такой код:
$(function() {
$("table.Content").hover(function() {
$(this).children("tbody").children("tr")
.children("td.ContentIndent").addClass("hover");
}, function() [
$(this).children("tbody").children("tr")
.children("td.ContentIndent").removeClass("hover");
});
});
с:
td.hover { background: #AAA; }