Html CSS:是否可以选择包含某些元素的父div?
假设我必须使用以下html:Html CSS:是否可以选择包含某些元素的父div?,html,css,Html,Css,假设我必须使用以下html: <div class='row'> <div class='cell'> <span class='image'> </span> Image Cell </div> <div class='cell'> Regular Cell </div> </div> 图像单元 规则细胞 是否可以清楚地选择包含span元素的d
<div class='row'>
<div class='cell'>
<span class='image'> </span>
Image Cell
</div>
<div class='cell'>
Regular Cell
</div>
</div>
图像单元
规则细胞
是否可以清楚地选择包含span元素的div与不包含span元素作为其第一个子元素的div单元格?尝试在没有js的情况下执行此操作。您可以稍微更改html,在具有span的div中添加一个CSS类,并将其用作“选择器”
图像单元
规则细胞
不。你不是第一个需要这个的人。几年前我和一个熟悉CSS和DOM解析以及如何在浏览器中应用样式的家伙在一个论坛上,他显然是一个“家长”选择器会导致各种各样的问题和资源开销,这是不值得的。您正在寻找类似于
:has
pseudoclass/:parent
pseudoclass/的东西,css不可能实现。没有“父”选择器。没有“祖先”选择器。现在没有,将来也不会有
为了不让您感到焦虑不安,使用JavaScript并不难做到这一点:
Array.prototype.forEach.call(document.querySelectorAll(".cell"), function (el) {
if (el.querySelector("span")) {
//found!
}
});
“在没有js的情况下尝试这样做。”那么为什么要在你的问题上加上javascript
标签呢?CSS3不可能。看看这篇文章,知道为什么CSS中不存在父选择器。我可以问一下,为什么你在没有js的情况下尝试它吗?@SunSparc我相信它更易于维护,但是由于表现不佳,我想我不得不解释一下,请说明你为什么投反对票!在这个网站上随意点击下箭头,没有任何理由,这对任何人都没有好处。
Array.prototype.forEach.call(document.querySelectorAll(".cell"), function (el) {
if (el.querySelector("span")) {
//found!
}
});