CSS第一个孩子的错误?还是有意的行为?

CSS第一个孩子的错误?还是有意的行为?,css,css-selectors,Css,Css Selectors,我有以下设置 .test div:first-child {}; <div class="test" id="one"> <div id="two"> <div id="three"> </div> </div> </div> divthree继承了第一个子样式,即使它不是div.test的第一个子样式。浏览器是否有意这样做?有人能解释一下吗 虽然二是一的第一

我有以下设置

.test div:first-child {};

<div class="test" id="one"> 

    <div id="two"> 

        <div id="three"> 
        </div>

    </div>

</div>
divthree继承了第一个子样式,即使它不是div.test的第一个子样式。浏览器是否有意这样做?有人能解释一下吗

虽然二是一的第一个孩子,但三不是,三仍然是二的第一个孩子。所以两个内部div都得到了样式

子组合符选择器中的空格字符告诉浏览器从.test的任何嵌套级别中选择任何div,只要它包含在该类的某个元素中。:first-child伪类表示,仅当元素是其父元素的第一个子元素时才选择该元素,无论该父元素是什么,而不仅仅是组合符左侧表示的元素

如果只希望以.test的第一个子项为目标,请使用子组合符>:

因为>表示父子关系,所以可以安全地暗示div:first child所涉及的父项由.test表示。

虽然two是1的第一个子项,但two不是,但two仍然是two的第一个子项。所以两个内部div都得到了样式

子组合符选择器中的空格字符告诉浏览器从.test的任何嵌套级别中选择任何div,只要它包含在该类的某个元素中。:first-child伪类表示,仅当元素是其父元素的第一个子元素时才选择该元素,无论该父元素是什么,而不仅仅是组合符左侧表示的元素

如果只希望以.test的第一个子项为目标,请使用子组合符>:


由于>表示父子关系,因此可以安全地暗示div:first child所涉及的父项由.test表示。

这是预期的行为。您需要这样编写CSS规则:

.test > div:first-child

>确保只选择.test元素的第一个子元素。如果没有它,将选择作为.test中任何节点的第一个子节点的任何div。

这是预期的行为。您需要这样编写CSS规则:

.test > div:first-child

>确保只选择.test元素的第一个子元素。如果没有它,将选择作为.test中任何节点的第一个子节点的任何div。

我认为您有一个输入错误,2个div的id为'3',id永远不应该以数字开头。..test>div:first child{}如果你只想让它应用于div2是的,ID的事情就是为了这个问题,所以人们可以识别我所说的div。我通过拼写数字的名称来修复ID。我想你有一个拼写错误,ID为'3'的2个div,ID也不应该以数字开始。.测试>div:first child{}如果你只想让它适用于div2是的,ID的事情就是为了这个问题,所以人们可以识别我所说的div。我通过拼写数字的名称来修复ID。明白了。我误解了第一个孩子。谢谢大家。别忘了将答案标记为已接受。这样,其他用户可以更容易地看到什么是有效的,人们将更容易回答您将来可能遇到的任何问题。谢谢!这对我帮助很大。我花了一个小时左右的时间把我的耳朵撕下来,明白了吗。我误解了第一个孩子。谢谢大家。别忘了将答案标记为已接受。这样,其他用户可以更容易地看到什么是有效的,人们将更容易回答您将来可能遇到的任何问题。谢谢!这对我帮助很大。我花了一个小时左右的时间拼命地工作。