IE8:nth-​​child和:之前

这是我的CSS:

#nav-primary ul li:nth-child(1) a:after { } 

现在无处不在(在我的网站上使用这个 )除了Internet Explorer 8 …

有没有可能在IE8中使用nth-child的方法? 这是这个浏览器最糟糕的版本…没有任何工作,因为它应该和我找不到解决方法。

@edit:我想要实现的简化版本: http : //jsfiddle.net/LvvNL/ 。 它只是一个开始。 CSS会更复杂,所以我需要能够瞄准每一个这样的链接。 希望给每个链接添加类并不是唯一的方法

@ edit2:我刚刚注意到了

 #nav-primary ul li:nth-child(1) a { border-top: 5px solid #144201; } 

IS实际上在IE8中工作! 但是这个:

 #nav-primary ul li:nth-child(1) a:after { content: "Text"; display: block; font-weight: normal; padding-top: 5px; font-size: 12px; color: #666; } 

不pipe用。 那么发生了什么?

你可以(ab)使用相邻的兄弟组合符( + )来实现这个工作在IE7 / 8中的CSS。

请参阅: http : //jsfiddle.net/thirtydot/LvvNL/64/

 /* equivalent to li:nth-child(1) */ #nav-primary ul li:first-child a { border-top: 5px solid red; } /* equivalent to li:nth-child(2) */ #nav-primary ul li:first-child + li a { border-top: 5px solid blue; } /* equivalent to li:nth-child(3) */ #nav-primary ul li:first-child + li + li a { border-top: 5px solid green; }​ 

你不能用这种方法模拟更复杂的变化:nth-child() ,如:nth-child(odd):nth-child(4n+3)

IE9.js解决了这个和其他相关的问题!

:nth-child(odd):nth-child(even)工作。

用法:

 <!--[if lt IE 9]> <script src="http://ie7-js.googlecode.com/svn/version/2.1(beta4)/IE9.js"></script> <![endif]--> 

尝试与NMWatcher配对Selectivizr 。 这就是我在我的所有网站上都能够在所有浏览器中获得良好的伪select器支持。 FWIW如果你使用了很多的HTML5元素,那么值得使用NMWatcher的v 1.2.3而不是1.2.4,我对今天的网站有一个selectivizr的问题,我似乎无法解决,然后我搬了到1.2.3,它工作正常。

IE8(及以下) 不支持 :nth-child() ,但确实支持:after 。 但是,因为您在使用:nth-child()之前:after在select器之后,IE8将不会运行它。

您可以通过向该行添加一个类或者添加对这些select器的支持的库来使用JavaScript解决scheme。

你可以使用:first-child而不是:n-child(1)这在IE7 +中有更好的支持

另见http://quirksmode.org/css/firstchild.html

ie9.js听起来像是最好的解决scheme,但你也可以添加一个类的单元格,例如

 <tr> <td class='first-cell'>stuff</td><td class='second-cell>stuff</td> </tr> <tr> <td class='first-cell'>stuff</td><td class='second-cell>stuff</td> </tr> .first-cell { font-weight: bold; } .second-cell { font-weight: normal; }