Стиль CSS для первого <td> в <tr>

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

<style>
td { text-align: right };
td:first-child { text-align: left };
</style>

Это делает все ячейки правильными. Если я поменяю порядок этих двух строк, то все ячейки выравниваются по левому краю. Очень смущен. Согласно w3schools,

Селектор first-child используется для выбора указанного селектора, только если он является первым дочерним элементом его родителя.

Но для меня это, похоже, не происходит.

Ответы

Ответ 1

Ваш синтаксис неверен.

td { text-align: right };                    /* This was being applied */
td:first-child { text-align: left };         /* This wasn't.. */

Должно быть:

td { text-align: right; }
td:first-child { text-align: left; }

Обратите внимание на полуколоны - они не должны находиться за пределами скобок {}

Кроме этого, вы правильно использовали :first-child.

jsFiddle demo

Ответ 2

Другой вариант, в зависимости от того, что вы хотите сделать:

table tr td {
    background-color:red;}
table tr td:nth-child(1) {
    background-color:green;}

Ответ 3

td:nth-child(2) { text-align: right; }

Вы можете сделать это в одной строке.