请考虑以下HTML:
<div class="mytest">
<ul>
<li>Parent 1</li>
<li>Parent 2
<ul>
<li>Child 1</li>
<li>Child 2</li>
<li>Child 3</li>
</ul>
</li>
<li>Parent 3</li>
</ul>
</div>
我只想在“父”li
周围放一个边框,我确信这个CSS可以解决问题:
.mytest > ul li {border : 1px solid #000;}
我将此selctor读作:“select li
,它们是ul
的子级,它是类mytest
的元素的直接子级”。但如果我使用它,“孩子”li
也会获得边界。 cfr this fiddle。有人可以解释为什么好吗?我认为没有理由,我可能会遗漏一些重要的事情,因为我确定我已经成功地将这个选择器用于同样的目的......
答案 0 :(得分:1)
尝试
.mytest > ul > li {border : 1px solid #000;}
答案 1 :(得分:1)
答案 2 :(得分:1)
您必须在<ul>
和<li>
之间添加直接子选择器,如下所示:
.mytest > ul > li {border : 1px solid #000;}
使用您的代码,您可以直接定位.mytest
中的<li>
元素中的所有<ul>
答案 3 :(得分:1)
您的选择器(如目前所示)选择父div的直接子项列表和该列表的所有后代项目。
要让它只选择那些直接后代的列表项,如果是列表,则必须添加另一个子选择器,如下所示:
.mytest>ul>li
答案 4 :(得分:1)
直接子选择器选择跟随父项的直接子项,因此您的代码将如下所示 -
.mytest是父母,其直接孩子是ul,直接孩子是li
.mytext&gt; ul&gt; li {border:1px solid#000;}
是正确的格式,如果您只想添加到您可以做的第一个直接孩子
.mytest&gt; ul&gt; li:第一个孩子{border:1px solid#000;}