Using the simple process of coloring every other row, for example, CurrentRow makes things very simple. Every query returns a few "pseudo-columns" (I think that's what they're called), things like CurrentRow and RecordCount that hold info about the recordset. When ColdFusion sends a SQL Statement to the database it has a name, so the returned records are "name.column" when you want to call on them. You just loop through the recordset like you do in PHP. CurrentRow is just like a column in how you call it, so "name.CurrentRow" with each loop is a new number. First loop is 1, second loop is 2, etc.
So in English,
"if name.CurrentRow is odd, color it. If it's even, don't color it"
I just do this using MOD (same as %) to find if it's even or odd.
So you can see how easily this can extend to getting chunks out of a recordset, say for pages of a search. I just pass p=2 in the URL for page 2 of the search and if I know how many rows I want per page it's simple math to get rows 11 through 20. CurrentRow will reflect this with each loop, starting at 11 and ending with row 20.
I know that was a lengthy explanation, but I hope it was helpful!