不匹配常规同级的CSS规则
如果我只想在存在不匹配常规同级的CSS规则,css,css-selectors,siblings,Css,Css Selectors,Siblings,如果我只想在存在p同级元素时设置div元素的样式,我可以编写以下CSS规则: p ~ div 当没有匹配的同级元素时,是否有CSS规则来设置元素的样式 例如: p !~ div 如果:not()允许使用组合符,您只需执行div:not(p~div)。但事实并非如此,因此您将无法以这种方式使用:not() 您需要的选择器将取决于您的结构。在您的情况下,如果没有p导致第一个div成为部分的第一个子项,您可以使用div:first child确保您选择div的条件满足: div:first-
p
同级元素时设置div
元素的样式,我可以编写以下CSS规则:
p ~ div
当没有匹配的同级元素时,是否有CSS规则来设置元素的样式
例如:
p !~ div
如果:not()
允许使用组合符,您只需执行div:not(p~div)
。但事实并非如此,因此您将无法以这种方式使用:not()
您需要的选择器将取决于您的结构。在您的情况下,如果没有p
导致第一个div
成为部分的第一个子项,您可以使用div:first child
确保您选择div
的条件满足:
div:first-child, div:first-child ~ div
如果您的结构不允许构造这样的选择器,那么您将不得不依赖Danield建议的覆盖规则。只需将id/class赋予div并编写其相应的CSS simple即可。反过来如何:
当没有
元素时,根据需要的方式为所有div设置样式
然后在存在
元素时重写该样式
section div
{
color: green;
}
section p ~ div
{
color: black;
}
+1谢谢,我已经考虑过了,但我不想让非CSS3浏览器为每个元素都显示绿色的。@Curt:~
得到了非常好的支持-IE7这样做可能不会在您的布局中出现模糊的bug。正如您可能已经猜到的,没有这样的组合器,但这在纸上听起来确实很有趣。不确定它在实践中会如何工作。选择器4通过允许组合符出现在:not()
中使之成为可能,但正如我在回答中提到的,还有快速和完整配置文件的问题,使其在CSS中无法使用。谢谢,您检测div:first child
的解决方案将在我的情况下起作用,因为p
是部分
中唯一存在的其他元素,如果存在,则始终是第一个元素。然而,未来的开发可能会打破这一规则,因此很遗憾,没有办法合并:not()
,但至少可以避免使用javascript!
section div
{
color: green;
}
section p ~ div
{
color: black;
}