不在其他元素内部的元素

Con*_*nic 5 css css-selectors

如果你有这个 HTML

\n\n
<div>\n    <span class="style-me">i want to be styled</span>\n</div>\n<div class="ignore-my-descendants">\n    <span class="style-me">i want to be styled but my parent prevents it</span>\n</div>\xe2\x80\x8b\xe2\x80\x8b\xe2\x80\x8b\xe2\x80\x8b\xe2\x80\x8b\xe2\x80\x8b\xe2\x80\x8b\xe2\x80\x8b\xe2\x80\x8b\xe2\x80\x8b\xe2\x80\x8b\xe2\x80\x8b\xe2\x80\x8b\xe2\x80\x8b\xe2\x80\x8b\xe2\x80\x8b\xe2\x80\x8b\xe2\x80\x8b\xe2\x80\x8b\xe2\x80\x8b\xe2\x80\x8b\xe2\x80\x8b\xe2\x80\x8b\xe2\x80\x8b\xe2\x80\x8b\xe2\x80\x8b\xe2\x80\x8b\xe2\x80\x8b\xe2\x80\x8b\xe2\x80\x8b\xe2\x80\x8b\xe2\x80\x8b\xe2\x80\x8b\xe2\x80\x8b\xe2\x80\x8b\xe2\x80\x8b\xe2\x80\x8b\xe2\x80\x8b\xe2\x80\x8b\xe2\x80\x8b\xe2\x80\x8b\xe2\x80\x8b\xe2\x80\x8b\xe2\x80\x8b\xe2\x80\x8b\xe2\x80\x8b\xe2\x80\x8b\xe2\x80\x8b\xe2\x80\x8b\xe2\x80\x8b\xe2\x80\x8b\xe2\x80\x8b\xe2\x80\x8b\xe2\x80\x8b\xe2\x80\x8b\xe2\x80\x8b\xe2\x80\x8b\xe2\x80\x8b\xe2\x80\x8b\xe2\x80\x8b\xe2\x80\x8b\xe2\x80\x8b\xe2\x80\x8b\xe2\x80\x8b\xe2\x80\x8b\xe2\x80\x8b\xe2\x80\x8b\xe2\x80\x8b\xe2\x80\x8b\xe2\x80\x8b\xe2\x80\x8b\xe2\x80\x8b\xe2\x80\x8b\xe2\x80\x8b\xe2\x80\x8b\xe2\x80\x8b\xe2\x80\x8b\xe2\x80\x8b\xe2\x80\x8b\xe2\x80\x8b\xe2\x80\x8b\xe2\x80\x8b\xe2\x80\x8b\xe2\x80\x8b\n
Run Code Online (Sandbox Code Playgroud)\n\n

那么这个 CSS 选择器

\n\n
.style-me:not(.ignore-my-descendants *) {\n    color: red;\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

不会匹配任何东西。也许是因为 :not() 只接受这里未给出的简单选择器(我不确定,希望你能告诉我真正的原因)。\n是否有一种纯CSS方法来过滤掉那些具有父匹配的元素给定的标准?

\n\n

编辑:我不想将任何值应用于要忽略的元素。\n这很重要,因为display无法预见元素所需的属性值。

\n

U.P*_*U.P 4

嗯...您正在选择一个孩子并要求匹配其父母。行不通

有一个简单的方法

.style-me {
    color: red;
}

.ignore-my-descendants .style-me {
        color: white;
    }
Run Code Online (Sandbox Code Playgroud)