不:第一个孩子选择器
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了不:第一个孩子选择器相关的知识,希望对你有一定的参考价值。
我有一个包含几个div
标签的ul
标签。
我只能为第一个ul
标签设置CSS属性:
div ul:first-child {
background-color: #900;
}
但是,我以下尝试为除第一个之外的其他ul
标记设置CSS属性不起作用:
div ul:not:first-child {
background-color: #900;
}
div ul:not(:first-child) {
background-color: #900;
}
div ul:first-child:after {
background-color: #900;
}
我怎么能写CSS:“每个元素,除了第一个”?
您为所有现代浏览器发布了actually works的版本之一(其中CSS selectors level 3是supported):
div ul:not(:first-child) {
background-color: #900;
}
如果您需要支持旧版浏览器,或者如果您受到:not
选择器的limitation(它只接受simple selector作为参数)的阻碍,那么您可以使用另一种技术:
定义一个比你想要的范围更大的规则,然后有条件地“撤销”它,将其范围限制为你想要的范围:
div ul {
background-color: #900; /* applies to every ul */
}
div ul:first-child {
background-color: transparent; /* limits the scope of the previous rule */
}
限制范围时,请对要设置的每个CSS属性使用default value。
这个CSS2解决方案(“任何ul
接连ul
”)也有效,并且得到了更多浏览器的支持。
div ul + ul {
background-color: #900;
}
与:not
和:nth-sibling
不同,adjacent sibling selector由IE7 +支持。
如果在页面加载后有javascript更改这些属性,您应该查看IE7和IE8实现中的一些已知错误。 See this link。
对于任何静态网页,这应该是完美的。
由于IE6-8不接受:not
,我建议你:
div ul:nth-child(n+2) {
background-color: #900;
}
所以你在其父元素中选择除第一个之外的每个ul
。
有关更多"Useful :nth-child Recipes" nth-child
的信息,请参阅Chris Coyer的examples文章。
div li~li {
color: red;
}
支持IE7
not(:first-child)
似乎不再起作用了。至少使用最新版本的Chrome和Firefox。
相反,试试这个:
ul:not(:first-of-type) {}
你可以使用not
的任何选择器
p:not(:first-child){}
p:not(:first-of-type){}
p:not(:checked){}
p:not(:last-child){}
p:not(:last-of-type){}
p:not(:first-of-type){}
p:not(:nth-last-of-type(2)){}
p:not(nth-last-child(2)){}
p:not(:nth-child(2)){}
上面的一些我没有运气,
这是唯一一个真正适合我的人
ul:not(:first-of-type) {}
当我试图让页面上显示的第一个按钮不受左边距选项影响时,这对我有用。
这是我首先尝试的选项,但它没有用
ul:not(:first-child)
因为我使用ul:not(:first-child)
是一个完美的解决方案。
div ul:not(:first-child) {
background-color: #900;
}
为什么这是完美的,因为通过使用ul:not(:first-child)
,我们可以在内部元素上应用CSS。像li, img, span, a
标签等。
但是当使用其他解决方案:
div ul + ul {
background-color: #900;
}
和
div li~li {
color: red;
}
和
ul:not(:first-of-type) {}
和
div ul:nth-child(n+2) {
background-color: #900;
}
这些仅限制ul级CSS。假设我们不能将li
上的CSS应用为`div ul + ul li'。
对于内层元素,第一个解决方案完美运行。
div ul:not(:first-child) li{
background-color: #900;
}
等等 ...
以上是关于不:第一个孩子选择器的主要内容,如果未能解决你的问题,请参考以下文章