CSS style for first <td> in a <tr>

Your syntax was incorrect.

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

Should be:

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

Note the semi-colons - they shouldn't be outside of the brackets {}

Other than that, you were using :first-child properly.

jsFiddle demo


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

You can do that in one line.


Another option, depending on what you want to do:

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