这让我抓狂:

HTML:

<div><h1>Hello World!</h1></div>

CSS:

*:not(div) h1 { color: #900; }

这不是说," Select 所有h1个元素,它们的祖先不是div个元素……"于是,"你好,世界!"不应该是红色的,但它仍然是红色的.

对于上述标记,添加子combinator是有效的:

*:not(div) > h1 { color: #900; }

但如果h1元素不是div元素的子元素,则不影响它.例如:

<div><article><h1>Hello World!</h1></article></div>

这就是为什么我想指出h1元素是div元素的后代,而不是子元素.有人吗?

推荐答案

这不是说," Select 祖先不是div个元素的所有h1个元素.?"

确实如此.但是在一个典型的HTML文档中,everyh1至少有两个祖先不是div元素-而这些祖先正是bodyhtml.

这就是try 过滤祖先使用:not()的问题:它不能可靠地工作,特别是当:not()没有被其他 Select 器(如类型 Select 器或类 Select 器,如.foo:not(div))限定时.只需将样式应用到所有h1个元素并用div h1覆盖它们,您就会轻松得多.

Selectors 4年,:not()已经得到了增强,可以接受包含组合子的完整复杂 Select 器,包括后代组合子.这是否会在fast概要文件(以及CSS)中实现还有待测试和确认,但一旦实现,您就可以使用它来排除具有特定祖先的元素.由于 Select 器的工作方式,为了可靠地工作,必须对元素本身而不是祖先进行否定,因此语法看起来会有些不同:

h1:not(div h1) { color: #900; }

任何熟悉jQuery的人都会很快指出这一点.这是 Select 器4试图纠正的a number of disparities between Selector 3's :not() and jQuery's :not()个问题之一.

Css相关问答推荐

如何在不重叠侧边栏的情况下尽可能使元素居中?

在文本之前添加了额外的空间-Angular 树视图CSS

使用 Flex 容器,如何在右对齐所有 Flex 子项的同时赋予子图像完整宽度?

解释 "document.styleSheets[0].cssRules[0].style;"

使元素不水平滚动

在 CSS 中,如何用破折号填充段落中每一行的空白区域?

有没有办法在 CSS 字体速记中使用数字字体粗细?

如何使用 Tailwind CSS 稳定 React 中的浮动标签?

在变量中存储匹配 Select 器的子元素的计数

如何为 React Native switch 组件创建标签?

CSS Select 器在 rvest 中找到,在 RSelenium 中找不到

如何在不使用 !important 的情况下提高优先级?

通过css修改样式shadowroot元素

在 vuetify 中跨 `default.vue` 和 `index.vue` 维护网格系统

如何创建一个与 Bootstrap 3 配合得很好的粘性页脚

在整个 DIV 周围添加 CSS 框阴影

是否可以删除悬停在链接上时出现的手形光标? (或将其设置为普通指针)

我应该在 HTML 中为我的 IMG 指定高度和宽度属性吗?

完成后如何防止css3动画重置?

CSS3 过渡:过渡:全部是否比过渡:x慢?