2010-02-04 1 views
16

Возможно, я лаю неправильное дерево. У меня есть таблица с 6 столбцами, каждая из которых имеет упорядоченный список. Я хочу, чтобы все они имели границу, за исключением первого списка.Выберите первый список в таблице - CSS-first-child?

The site is in development here В принципе, хотя HTML является

<tr> 
<td> 
    <ol> 
    <li>hello</li> 
    </ol> 
</td> 
<td> 
    <ol> 
    <li>hello</li> 
    </ol> 
</td> 
<td> 
    <ol> 
    <li>hello</li> 
    </ol> 
</td> 
</tr> 

Я думал, что первый ребенок тр будет работать как и tr:first-child ol {style}

ответ

24

Селектор :first-child является CSS2 и не поддерживается IE6. Если IE6 важен, вам нужно будет дать первому ребенку класс, который вы можете выбрать вместо него. Но правильный синтаксис:

tr td:first-child ol { ... } 

Когда вы делаете:

tr:first-child ... 

вы на самом деле выбор <tr> элементов, которые являются первых детей. Кроме того, следует помнить, что:

tr :first-child ... 

выбирает первые дочерние из строки таблицы.

+0

Отличное спасибо, он работает сейчас :) Мне не нужно беспокоиться об IE6 для этого сайта (слава богу!), Еще раз спасибо – morktron

+1

Будьте осторожны с 'tr: first-child', потому что это цели все, что является первым ребенком в 'tr'. Он может поражать любые изображения, ссылки, промежутки и т. Д. В вашей разметке неожиданно. Вы почти наверняка имеете в виду: «tr td: first-child, trth: first-child», когда вы это пишете. – adamnfish

+2

@adamnfish: Или просто 'tr>: first-child', потому что во вложенных таблицах ваш селектор выберет все вложенные' td' и 'th', которые также являются первыми детьми ... – BoltClock

3

Это не совсем так, как это работает, tr:first-child ol выбирает tr, который является первым дочерним элементом его родительского элемента. Вы должны использовать псевдокласмент first-child вместо td.

Смежные вопросы