 <p>As others have said, IE8 does not support the <code>nth-child()</code> selector in CSS.</p> <p>You have the following options:</p> <ol> <li><p>Refactor your code to use an alternative method rather than <code>nth-child()</code>. Maybe just add a class to the relevant elements.</p></li> <li><p>Use a javascript polyfill such a <a href="https://code.google.com/p/ie7-js/" rel="nofollow">IE9.js</a> or <a href="http://selectivizr.com/" rel="nofollow">Selectivizr</a>, which back-ports the <code>nth-child()</code> selector (and others) to IE8.</p></li> <li><p>Use jQuery or a similar library that supports <code>nth-child()</code> to set the styles rather than doing it in CSS.</p></li> <li><p>Drop support for IE8.</p></li> </ol> <p>Which of those options you decide to use will depend on what matters to you.</p> <p>If you've got code that works in other browsers and you need it to work in IE8 with the least amount of additional work, then I would suggest trying out the Selectivizr library. Or IE9.js. But I'd suggest trying Selectivizr first, as IE9.js does a lot of other stuff to the browser that may or may not affect your site.</p> <p>If you don't want to have to use a Javascript library for this but you still need IE8 support, then you'll need to take option 1, and refactor your code. That may or may not be a lot of work, depending how your code is structured and how much code there is. Bit of a shame to have to make a backward step when the CSS is there.</p> <p>Option 4 sounds like the worst option, but might be more suitable than it sounds. If the <code>nth-child</code> styling is being used for something like zebra striping, it may not be the end of the world for IE8 users just to not get the stripes. If everything else in the site works okay, they may not even miss it. And if they do miss it, you can tell them to upgrade their browser.</p>