Вы можете сделать это с помощью Javascript или фреймворка, например jQuery , но, пройдя этот путь сам, я бы не стал. Причина в скорости: я делал нечетно-четную стилизацию строки с помощью jQuery, и загрузка страницы занимала где-то 100-500 мс (между этим и несколькими другими вещами). Это (imho) недопустимо долго для того, что можно сделать на сервере.
Если вы готовы с этим жить, тогда иди с этим. У CSS есть селектор: nth-child (n), но он не поддерживается в IE6. Лично я бы сгенерировал классы как часть HTML на стороне сервера.
С помощью jQuery вы можете сделать это:
<script type="text/javascript">
$(function() {
$("table tbody tr :first-child").addClass("abc1");
$("table tbody tr :nth-child(2)").addClass("abc2");
// etc
});
</script>
Преимущество jQuery заключается в том, что он использует CSS2.1 и некоторые CSS3 и пользовательские селекторы, но ему не важно, что поддерживает браузер, поскольку он поддерживает то, что браузер не поддерживает.