是否可以选择没有特定类型子元素的元素?

时间:2018-04-06 20:04:17

标签: html css css3 css-selectors

我试图选择不属于<a>元素的<img>元素。 (注意:如果相关的一些我想选择的锚点是无子的。)我试过这个:

a > :not(img) {}

和此:

a:not(> img) {}

但它们似乎都不起作用。我将如何在CSS中实现这一目标?

2 个答案:

答案 0 :(得分:4)

:has()伪类有spec,目前处于草稿状态。没有浏览器支持它。如果规范有一天得到批准和实施,那么您就可以做到这一点:

a:not(:has(img)) {
    // Styles
}

MDN page表示:has永远不会在样式表中使用,只能在JavaScript中使用;但是在说,它链接到规范的一部分关于&#34;动态选择器配置文件&#34;显然不再存在。

我认为浏览器供应商在实现CSS功能时通常会遇到问题,这些功能需要知道只在创建所选元素后才存在的DOM,所以我不知道我们是否应该对此抱有希望。跟踪邮件列表或通常比我聪明的人可能会提供更好的预后。

答案 1 :(得分:1)

不幸的是,没有。你需要使用jQuery。

您可以使用CSS执行某种解决方法:

  1. 将类分配给没有子元素作为图像的链接,并使用该类对链接进行正常样式设置(例如a.class{color: red}

  2. 将类分配给具有image子元素的链接,并使用a:not(.class){}更改其颜色

  3. 原因:CSS中没有父选择器。看到: Is there a CSS parent selector?CSS Parent/Ancestor Selector