css - 选择不是具有特定属性属性的元素的子元素
问题描述
本质上,我希望所有“a”元素都是红色的,除非它们是具有“data-foo”属性属性的元素的后代子元素。
这个html:
<div data-foo="whatever">
<div>
... more descendants
<a href="#">I should be default color</a>
</div>
</div>
<a href="#">I should be red</a>
使用这个 CSS:
:not([data-foo]) a {
color: red;
}
在这个例子中,仍然选择了两个“a”元素。我还尝试了以下方法:
div:not([data-foo]) a
*:not([data-foo]) a
div:not([data-foo]) a
*:not(div[data-foo]) a
但我要么什么都没有选择,要么全部选择。这是一个可能的选择吗?
解决方案
您可以添加两条规则,一条用于所有A
,另一条用于[data-foo] > a
with color: unset;
(或您想要的特定颜色):
A {
color: red;
}
[data-foo] A {
color: inherited;
}
<div data-foo="whatever">
<a href="#">I should be default color</a>
</div>
<a href="#">I should be red</a>
推荐阅读
- java - 如何在 jTextPane 中获取特定字符的字体(isBold、isUnderline)?
- chart.js - Chartjs标签位置
- linux - kthreadd 是否包含在 linux 进程中?
- amazon-web-services - 添加没有 www 的主机无法使用 Ingress 资源
- android - 截图无法捕捉阴影为什么?
- python - 如何合并两个词典制作词典列表?
- javascript - 在 Handlebars 中使用从助手返回的对象
- python - 将数组列表转换为数据框
- neo4j - Neo4j 密码查询
- embedded-linux - 我们如何将 THERMAL_DEFAULT_GOV_POWER_ALLOCATOR 设置为 Linux 上的默认热调节器?