Проблема в том, что элементы td
вложены в элемент tr
, что означает, что фон td
будет "выше" фона tr
.
Чтобы td
s "потерял" свой фон, у вас есть как минимум два варианта:
Один : http://jsfiddle.net/mqchen/WXvkk/
Используя псевдоселектор :not()
, вы можете установить фон td
только тогда, когда пользователь не наводит указатель мыши на tr
. Недостатком этого является то, что :not()
работает только в некоторых браузерах (IE), если вы используете, например, http://selectivizr.com/
table tr:not(:hover) td:first-child {
background-color: #eee;
}
table tr:hover {
background-color: yellow;
}
Два : http://jsfiddle.net/mqchen/zPGW9/
Установите цвет фона td
прозрачным, когда родительский элемент tr
находится над ним.
table td:first-child {
background-color: #eee;
}
table tr:hover td:first-child {
background-color: transparent;
}
table tr:hover {
background-color: yellow;
}
Преимущество этих решений по сравнению с Samich заключается в том, что это также будет работать, когда фон родительского элемента не является сплошным цветом, например. графика, градиент и т. д.