Here is an example illustrating the difference:
http://jsfiddle.net/bEfT6/
:even matches every 2nd element in the set of elements that you select. Where as :nth-child(even) matches any elements that are an even child of their respective parent.
So, in the example, you see that two selectors act on different elements. Elements with red text correspond to the selected class and are even children of the parent div. Lines with a blue background correspond to the selected class and even within this choice.
So:
.something:nth-child(odd)
corresponds to each element with the class something , which is its even parent.
.something:even
matches any other element with the class something . (regardless of the attitude towards his brothers and sisters)
source share