11

我继承了以下 CSS 代码来最初隐藏一系列段落和一系列列表项的后面元素。

.profileSection p:nth-of-type(n+2) {
    display: none;
}

.profileSection li:nth-of-type(n+6) {
    display: none;
}

显然,这段代码在 IE8 中不起作用。隐藏这些元素的替代方法是什么?

4

3 回答 3

4

这是一个关于它的讨论:

http://www.thebrightlines.com/2010/01/04/alternative-for-nth-of-type-and-nth-child/

作者提到您可以通过使用来引用特定的子元素

tagname + tagname + etc

或者通过使用获得通用孩子

* + * + etc

我个人只会为这些项目添加一个特殊的类。

于 2012-12-11T21:25:32.217 回答
3

+相邻兄弟选择器,将允许您选择所有直接相邻的兄弟。在你的情况下:.profileSection p+p。(如果您必须这样做,请考虑将其包装在某些东西中以防止其他浏览器看到它,例如条件注释。)

但是,如果您的标记包含的元素不是彼此相邻的元素,+那将无济于事。<p>例如:

<p>Alpha</p>
<h4>Header</h4>
<p>Beta</p>

如果您在站点上还没有某种shivmodizr功能(这将有助于解决许多其他类似问题),最简单的方法是向元素添加一个特殊类,然后选择使用该类。

于 2012-12-11T23:24:42.940 回答
0

您还可以尝试下载并包含selectivizr,它使 css3 选择器在 IE6-8 中工作

于 2013-01-29T21:41:45.577 回答