css - CSS 精确子选择器
问题描述
我知道大于(>)符号/选择器将选择确切的孩子而不是嵌套的
但在这个例子中,所有<li>
的 BG 都变黑了
<div id="content">
<ul>
<li>List Item With ul
<ul>
<li>Sub list item</li>
<li>Sub list item</li>
<li>Sub list item</li>
</ul>
</li>
<li>List Item</li>
<li>List Item</li>
</ul>
</div>
CSS:
#content > ul li {
background: black;
color: white;
}
根据规则黑色 BG 不应该用于 子列表项,但在这里它适用于所有<li>
(应该只用于List Item With)
解决方案
您当前的代码选择li
第一级中的任何一个ul
。子列表li
标签仍然是第一个标签的后代,ul
所以要设置样式。您还需要使用 select 的直接后代ul
:
#content > ul > li {
background: black;
color: white;
}
但是,您还有一个问题,即所有子列表都在该 styledli
中。子元素没有设置背景或颜色,因此背景是透明的并且颜色是继承的。您需要应用新的背景和颜色来覆盖这些样式。
#content>ul>li {
background: black;
color: white;
}
#content li li {
background: white;
color: black;
}
<div id="content">
<ul>
<li>List Item With ul
<ul>
<li>Sub list item</li>
<li>Sub list item</li>
<li>Sub list item</li>
</ul>
</li>
<li>List Item</li>
<li>List Item</li>
</ul>
</div>
推荐阅读
- clojure - Clojure 中的 `def` 语句中使用的环境变量
- python-3.x - 两列之间的 Groupby 协方差
- c# - 存储库模式中的分页、排序和搜索在哪里?
- java - Spring Boot AOP 方面导致 autwired bean 返回 null
- amazon-web-services - 在 DynamoDB (aws-cli) 中按非键字段过滤
- database - 将此 Btree 索引从 Postgres 转换为 Oracle
- sql - 在 SQL Server 中增加总小时数
- html - 窗口调整大小时的动画定位
- python - 我正在尝试使用并发期货进行线程处理,但似乎有些期货没有返回,它们会无限期地运行
- javascript - Angular中的条件更改检测策略?