[英]not:first-child selector
我有一个包含多个ul
标签的div
标签。
我只能为第一个ul
标签设置 CSS 属性:
div ul:first-child {
background-color: #900;
}
但是,我以下尝试为除第一个 ul 标签之外的每个其他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 中写:“除第一个元素外的每个元素”?
您发布的版本之一实际上适用于所有现代浏览器(支持CSS 选择器级别 3 ):
div ul:not(:first-child) {
background-color: #900;
}
如果您需要支持旧版浏览器,或者您受到:not
选择器的限制(它只接受一个简单的选择器作为参数),那么您可以使用另一种技术:
定义一个范围比您想要的更大的规则,然后有条件地“撤销”它,将其范围限制在您想要的范围内:
div ul {
background-color: #900; /* applies to every ul */
}
div ul:first-child {
background-color: transparent; /* limits the scope of the previous rule */
}
限制范围时,请为您设置的每个 CSS 属性使用默认值。
由于:not
不被IE6-8接受,我建议你这样做:
div ul:nth-child(n+2) {
background-color: #900;
}
因此,您选择其父元素中的每个ul
,但第一个ul
除外。
有关更多nth-child
示例,请参阅 Chris Coyer 的“有用的 :nth-child Recipes”文章。
not(:first-child)
似乎不再起作用了。 至少对于较新版本的 Chrome 和 Firefox。
相反,试试这个:
ul:not(:first-of-type) {}
div li~li {
color: red;
}
支持IE7
您可以使用任何带有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)){}
您可以将选择器与:not
使用,您可以在:not()
使用任何选择器
any_CSS_selector:not(any_other_CSS_selector){
/*YOUR STYLE*/
}
您也可以使用
:not
没有父选择器。
:not(:nth-child(2)){
/*YOUR STYLE*/
}
更多例子
any_CSS_selector:not(:first-child){
/*YOUR STYLE*/
}
any_CSS_selector:not(:first-of-type){
/*YOUR STYLE*/
}
any_CSS_selector:not(:checked){
/*YOUR STYLE*/
}
any_CSS_selector:not(:last-child){
/*YOUR STYLE*/
}
any_CSS_selector:not(:last-of-type){
/*YOUR STYLE*/
}
any_CSS_selector:not(:first-of-type){
/*YOUR STYLE*/
}
any_CSS_selector:not(:nth-last-of-type(2)){
/*YOUR STYLE*/
}
any_CSS_selector:not(:nth-last-child(2)){
/*YOUR STYLE*/
}
any_CSS_selector:not(:nth-child(2)){
/*YOUR STYLE*/
}
我对上面的一些没有运气,
这是唯一真正对我有用的
ul:not(:first-of-type) {}
当我试图让页面上显示的第一个按钮不受左边距选项的影响时,这对我有用。
这是我首先尝试的选项,但没有用
ul:not(:first-child)
您可以在“not()”伪类中使用“first-child”伪类。
div ul:not(:first-child){ background-color: #900; }
<html> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Pseudo Classes</title> </head> <body> <div> <ul> <li><a href="#">Home</a></li> <li><a href="#">Products</a></li> </ul> <ul> <li><a href="#">About</a></li> <li><a href="#">Contact</a></li> </ul> <ul> <li><a href="#">Services</a></li> <li><a href="#">Downloads</a></li> </ul> <ul> <li><a href="#">Facebook</a></li> <li><a href="#">Instagram</a></li> </ul> </div> </body> </html>
替代方式,
div ul:not(:nth-child(1)){ background-color: #900; }
<html> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Pseudo Classes</title> </head> <body> <div> <ul> <li><a href="#">Home</a></li> <li><a href="#">Products</a></li> </ul> <ul> <li><a href="#">About</a></li> <li><a href="#">Contact</a></li> </ul> <ul> <li><a href="#">Services</a></li> <li><a href="#">Downloads</a></li> </ul> <ul> <li><a href="#">Facebook</a></li> <li><a href="#">Instagram</a></li> </ul> </div> </body> </html>
使用“nth-of-type()”,它将选择其父元素的第 n 个元素。
div ul:not(:nth-of-type(1)){ background-color: #900; }
<html> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Pseudo Classes</title> </head> <body> <div> <ul> <li><a href="#">Home</a></li> <li><a href="#">Products</a></li> </ul> <ul> <li><a href="#">About</a></li> <li><a href="#">Contact</a></li> </ul> <ul> <li><a href="#">Services</a></li> <li><a href="#">Downloads</a></li> </ul> <ul> <li><a href="#">Facebook</a></li> <li><a href="#">Instagram</a></li> </ul> </div> </body> </html>
使用“nth-last-child()”,它将选择从最后一个孩子开始计数的第n个孩子。 如果你有 4 个“ul”标签,你可以这样写。
div ul:not(:nth-last-child(4)){ background-color: #900; }
<html> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Pseudo Classes</title> </head> <body> <div> <ul> <li><a href="#">Home</a></li> <li><a href="#">Products</a></li> </ul> <ul> <li><a href="#">About</a></li> <li><a href="#">Contact</a></li> </ul> <ul> <li><a href="#">Services</a></li> <li><a href="#">Downloads</a></li> </ul> <ul> <li><a href="#">Facebook</a></li> <li><a href="#">Instagram</a></li> </ul> </div> </body> </html>
div ul:not(:nth-last-of-type(4)){ background-color: #900; }
<html> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Pseudo Classes</title> </head> <body> <div> <ul> <li><a href="#">Home</a></li> <li><a href="#">Products</a></li> </ul> <ul> <li><a href="#">About</a></li> <li><a href="#">Contact</a></li> </ul> <ul> <li><a href="#">Services</a></li> <li><a href="#">Downloads</a></li> </ul> <ul> <li><a href="#">Facebook</a></li> <li><a href="#">Instagram</a></li> </ul> </div> </body> </html>
这些是处理此类情况的一些最佳方法。
因为我使用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;
}
等等 ...
li + li {
background-color: red;
}
div ul::nth-child(n+2){
background-color: #900;
}
也在工作
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.