CSS:not()选择器指定上一个元素
这是一个非常简单的问题,我无法完全理解 我有一系列这样的div:CSS:not()选择器指定上一个元素,css,css-selectors,Css,Css Selectors,这是一个非常简单的问题,我无法完全理解 我有一系列这样的div: <h1>Heading 1</h1> <h2>Heading 2</h2> <p>Paragraph text</p> <h2>Heading 3</h2> <p>Paragraph text</p> 但这似乎不起作用。我是否犯了某种愚蠢的语法错误,或者这是不可能的?CSSnot伪选择器不允许使用复杂的
<h1>Heading 1</h1>
<h2>Heading 2</h2>
<p>Paragraph text</p>
<h2>Heading 3</h2>
<p>Paragraph text</p>
但这似乎不起作用。我是否犯了某种愚蠢的语法错误,或者这是不可能的?CSS
not
伪选择器不允许使用复杂的选择器。你对此无能为力
要获得所需的功能,您必须覆盖它:
#文本h2{
边缘顶端:3em;
}
#文本h1+h2{
边际上限:0;
}
CSS非
伪选择器不允许使用复杂选择器。你对此无能为力
要获得所需的功能,您必须覆盖它:
#文本h2{
边缘顶端:3em;
}
#文本h1+h2{
边际上限:0;
}
同样,CSS:not()
选择器不允许在其内部使用组合符,因此实际上,这是一个语法错误
在这种情况下,由于+
组合器的工作方式,您应该能够简单地将+h2
移出:not()
并移除其前面的h2
,如下所示:
#文本:非(h1)+h2{
边缘顶端:3em;
}
如果h2
将永远是第一个子项(鉴于您的示例,它不应该是),并且您希望匹配该子项,则需要稍微扩展选择器:
#文本h2:第一个孩子,#文本:非(h1)+h2{
边缘顶端:3em;
}
但是,如果这两种方法中的任何一种都失败,您可以始终使用好的ol'覆盖。因为CSS:not()
选择器不允许在其内部使用组合符,所以确实是语法错误
在这种情况下,由于+
组合器的工作方式,您应该能够简单地将+h2
移出:not()
并移除其前面的h2
,如下所示:
#文本:非(h1)+h2{
边缘顶端:3em;
}
如果h2
将永远是第一个子项(鉴于您的示例,它不应该是),并且您希望匹配该子项,则需要稍微扩展选择器:
#文本h2:第一个孩子,#文本:非(h1)+h2{
边缘顶端:3em;
}
但是,如果这两种方法中的任何一种都失败,您可以始终使用良好的ol'覆盖。Ah ok。是的,这就是我目前所做的,我认为一个更优雅的解决方案是把它压缩成1个规则而不是2个,但我猜这是不可能的。啊,好的。是的,这就是我目前所做的,我认为一个更优雅的解决方案是将它压缩成1条规则而不是2条规则,但我猜这是不可能做到的。@Joseph Silber:这没有必要。这是一个很好的选择!:)@约瑟夫·西尔伯:我应该在我所有的答案中强调这一点,因为我对突出显示的工作方式也不满意。谢谢你的提醒。@Jascination:很高兴我帮了你。如果你还没有看到我对你上一个问题的回答,你可能想看看:)@Joseph Silber:没必要。这是一个很好的选择!:)@约瑟夫·西尔伯:我应该在我所有的答案中强调这一点,因为我对突出显示的工作方式也不满意。谢谢你的提醒。@Jascination:很高兴我帮了你。如果您还没有看到我对上一个问题的回答,您可能想看看:)
#text h2:not(h1+h2){
margin-top:3em;
}