此问题在此处已有答案:
Is there a CSS parent selector?(33个答案)
9年前就关门了。
我正在寻找一个选择器,它将选择所有元素,如果他们有一个特定的子元素。例如,选择所有<div>
与一个子<span>
。
有可能吗?
此问题在此处已有答案:
Is there a CSS parent selector?(33个答案)
9年前就关门了。
我正在寻找一个选择器,它将选择所有元素,如果他们有一个特定的子元素。例如,选择所有<div>
与一个子<span>
。
有可能吗?
3条答案
按热度按时间qmb5sa221#
是否可以选择包含特定子元素的元素?
很不幸还没有。
CSS2和CSS3选择器规范不允许任何类型的父选择。
规格变更说明
这是一个关于这篇文章的准确性的免责声明。CSS中的父选择器已经讨论了很多年。由于没有达成共识,变化不断发生。我将尝试保持这个答案最新,但是要注意 * 由于规范的变化 * 可能会有不准确之处。
一个旧的"Selectors Level 4 Working Draft"描述了一个功能,即指定选择器的“主题”的能力。此功能已被删除,将不适用于CSS实现。
主题将是选择器链中的元素,将有样式应用于它。
示例HTML
此选择器将样式化
span
元素型
此选择器将样式化
p
元素型
最近的“Selectors Level 4 Editor's Draft”包括“关系伪类:
:has()
“:has()
允许作者根据内容选择元素。我的理解是,选择它是为了提供与jQuery's custom:has()
伪选择器 * 的兼容性。在任何情况下,继续上面的示例,要选择包含
span
的p
元素,可以使用:用途:型
vqlkdk9b2#
2023年1月更新-仅IE不支持
has()
CSS Selectors 4规范中的
:has()
伪选择器解决了这个用例。要使用它,我们将编写如下内容:
字符串
在一个结构中,如:
型
这个CSS将以
.bar
div为目标-因为它 both 有一个 parent.foo
,并且从它在DOM中的位置来看,> .baz
解析为一个有效的元素目标。原始答案(保留用于历史目的)- * 此部分不再准确 *
为了完整起见,我想指出的是,在Selectors 4规范(目前在提案中)中,这将成为可能。具体来说,我们将获得主题选择器,它将以以下格式使用:
型
div
选择器之前的!
表示它是要样式化的元素,而不是span
。不幸的是,没有现代浏览器(截至本文发布时)将此作为其CSS支持的一部分。但是,如果你想进一步探索,可以通过a JavaScript library called Sel进行支持。3j86kqsm3#
我同意这在一般情况下是不可能的。
CSS3唯一能做的事情(在我的例子中很有帮助)是选择没有子元素的元素:
字符串
或有任何子女(包括文本):
型