CSS прямой потомок ">" оператор не работает (а это не IE6)?

Я пытаюсь сделать что-то очень простое - выберите теги, которые являются прямыми потомками тега.

Используемый мной CSS выглядит следующим образом:

table.data > tr { background-color: red; }

Мой HTML выглядит так:

<table class="data">
    <tr>
        ...
    </tr>
</table>

Но красный фон не появится! Если я удалю символ " > " из CSS, он будет работать! Я пробовал это в Firefox, IE 8, Chrome и Safari, и все браузеры делают то же самое.

Надеюсь, кто-то может мне помочь после стольких разочаровывающих часов! Я знаю, что делаю что-то очень глупое, но я не могу понять, что это такое.

Ответ 1

Большинство браузеров 1 автоматически вставляют элемент tbody в table, поэтому css должен быть:

table.data > tbody > tr { background-color: red; }

чтобы учесть это.


1 Я думаю, что все браузеры делают это, но у меня нет возможности или времени проверить это предположение. Если вас беспокоит, что могут быть некоторые пользователи с браузером, который этого не делает, вы можете предложить оба селектора в css:

table.data > tr,
table.data > tbody > tr { background-color: red; }