为什么是css样式<;P>;在一个<;A>;当被告知不要

为什么是css样式<;P>;在一个<;A>;当被告知不要,css,Css,这让我对:not()选择器非常困惑,因为其行为是相同的跨浏览器: CSS: main*:非(a)p{ 颜色:红色; } a{ 颜色:蓝色; } HTML: 非猫科动物 elit quis,rutrum tortor SSCCE: 跨浏览器,这会将设置为蓝色,而将设置为红色用作我希望此功能发挥作用的示例。main*:not(a)p并不意味着“,是的后代,中间没有”。它的意思是“,不是的事物的后代,它是的后代” 因此,例如,它将不匹配..,因为和之间唯一的东西是,它也不会匹配..,因为和之间没

这让我对
:not()
选择器非常困惑,因为其行为是相同的跨浏览器:

CSS:

main*:非(a)p{
颜色:红色;
}
a{
颜色:蓝色;
}
HTML:


非猫科动物
elit quis,rutrum tortor

SSCCE:

跨浏览器,这会将
设置为蓝色,而将
设置为红色
用作我希望此功能发挥作用的示例。

main*:not(a)p
并不意味着“
,是
的后代,中间没有
”。它的意思是“
,不是
的事物的后代,它是
的后代”

因此,例如,它将不匹配
..

,因为
之间唯一的东西是
,它也不会匹配
..

,因为
之间没有任何东西。但是它将匹配
..
,因为后代组合符允许
*:not(a)
跳过
并绑定到

编辑:忘记我之前建议的讨厌的事情,我想这正是你想要的:

p{color:red}
a、 p{color:blue}

位于
内部时,蓝色获胜,因为
是设置颜色的最近祖先。当一个
在一个
中时,蓝色赢了,因为
a p
p
更具体,你在想什么<代码>图
figcaption
本质上是
:不是(a)
,因此它符合第一条规则。你希望
中的

是什么颜色?@wdosanjos我希望

继承的是
中的颜色,因为我不希望
主*:不是(a)p
中匹配
感谢您的快速,并阻止我编写同一答案的英文版本:D+1,因为它快速、准确,并为愚蠢的要求道歉selector@Supuhstar我想到了一个更好的方法来做你想做的事(假设我理解你想要什么)。