这不是读到“选择所有h1@H_403_3@祖先不是
div@H_403_3@元素的元素吗?”。
是的 但是在典型的HTML文档中, 每个 h1@H_403_3@人至少都有两个不是
div@H_403_3@元素的祖先,而这些祖先就是
body@H_403_3@and
html@H_403_3@。
这是尝试使用:not()@H_403_3@以下方法过滤祖先的问题:只是无法可靠地工作,特别是当
:not()@H_403_3@不能被其他选择器(例如类型选择器或类选择器)限定时
.foo:not(div)@H_403_3@。只需将样式应用于所有
h1@H_403_3@元素并使用覆盖它们,您将拥有更加轻松的时间
div h1@H_403_3@。
在选择器4中,:not()@H_403_3@已进行增强,可以接受包含组合器(包括后代组合器)的完整复杂选择器。是否在快速配置文件中实现(从而在CSS中实现)仍待测试和确认,但是一旦实现,您_将_ 能够使用它来排除具有某些祖先的元素。由于选择器的工作方式,必须对元素本身(而不是祖先)进行取反才能可靠地工作,因此语法看起来会有些不同:
h1:not(div h1) { color: #900; }
@H_403_3@
任何熟悉jQuery的人都会很快指出,该选择器现在可以在jQuery中使用。这是选择器3:not()@H_403_3@与jQuery之间的众多差异之一,选择
:not()@H_403_3@器4试图纠正这一差异