css - 为什么没有 > 这段 CSS 代码不起作用
问题描述
在下面的JSFiddle中,我有一个示例尝试不对 .k-grid 类的 div 内的对象应用样式。
在给定的示例中,以下代码行没有按我的预期工作。据我了解 CSS 我是说:每个 P 对象,没有“花式”类,并且不在具有 .k-grid 的 div 对象内的某个位置。
由于我给定的 p 对象在带有 .k-grid 的 div 内,我不希望它变成绿色.. 但它确实如此。
<style>
form.editform div:not(.k-grid) p:not(.fancy) {
color: green;
}
</style>
<form class="editform">
<div>
<div class="k-grid">
<p>I am a paragraph.</p>
<p class="fancy">
<span class="notfancy">I am so very fancy!</span></p>
<div class="fancy">I am NOT a paragraph.</div>
</div>
</div>
</form>
当我更改form.editform div:not(.k-grid) p:not(.fancy)
为它时,form.editform div:not(.k-grid)>p:not(.fancy)
它确实正确地排除了 p 幻想变成绿色。
有人可以向我解释为什么空间不能从对象中删除类,而 > 确实有效吗?以及解释“后代”和“孩子”之间的区别。
解决方案
后代是孩子和孩子的后代(例如孙子、孙孙等)。你<span>
是 的后代<form>
,但不是它的孩子。
在任何情况下都<div class="k-grid">
不会匹配到div:not(.k-grid)
.
您的选择器正在选择<form class="editform">
它的form.editform
,它的后代(顺便说一下,一个孩子)<div>
,div:not(.k-grid)
以及它的后代(更准确地说,孙子)<p>
。您可以通过更改为 egp:not(.fancy)
来检查这是否正在发生,并看到 CSS 规则停止生效。<div>
<article>
当您将选择器的最后一部分更改为子选择器时,<p>
无法匹配,因为它是<div>
.
推荐阅读
- java - 如何使用“;”向各种电话号码发送消息 对于单独的(java android)?
- c++ - 二叉搜索树-删除节点会导致其他方法错误c ++
- python - 设置 simpleRNN 的维度(请提供具有相同第一个维度的数据)
- python - 将嵌套字典与一系列可能值进行比较
- react-router - React-Router 与 window.location 不同步?
- xamarin.forms - Azure 通知中心设备注册
- javascript - 有什么方法可以在单击 div 时在节点 js 服务器中获取价值
- tfs - TFS 2013 Multipipeline 构建类似于 Jenkins
- php - PHP $_POST 有效,但 $_GET 无效
- python - pandas 子字符串查找,返回多个值(关键字标记)[python]