我有
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中编写:“每个元素,除了第一个”?
您发布的版本之一实际上适用于所有现代浏览器(其中支持 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
,除了第一个
。请参阅 Chris Coyer 的 “有用的:第 n 个孩子的食谱”
文章了解更多nth-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>
使用“nth-child()”,它将选择第 n 个孩子。
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>
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>
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>
使用“nth-last-of-type()”,它将选择其父元素从最后一个子元素开始计数的第n个元素。如果你有4个“ul”标签,你可以这样写。
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-of-type) {}
div li~li {
color: red;
}
您可以使用任何带有
的选择器
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()
any_CSS_selector:not(any_other_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)
正如我所使用的那样,
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;
}
:nth-child()
文档。
div ul:nth-child(n+2)::after {
background-color: #900;
}
div ul::nth-child(n+2){
background-color: #900;
}