当前位置: 首页 > 面试题库 >

类型n与子n

柳奇思
2023-03-14
问题内容

我对nth-of-type伪类以及伪类的工作方式感到困惑,尤其是与nth-child类相比。

也许我有一个错误的想法,但是考虑到这种结构

<div class="row">
    <div class="icon">A</div>
    <div class="icon">B</div>
    <div class="label">1</div>
    <div class="label">2</div>
    <div class="label">3</div>
</div>

..第三个子元素(第一个带有类标签的元素)应该(也许?)可用

.row .label:nth-of-type(1) {
    /* some rules */
}

但是,至少在这里是chrome,它不会选择它。仅当它是该行中的第一个孩子时,它才似乎起作用。这与nth-child-因此,this和nth-of-type?之间有什么区别?


问题答案:

nth-child伪类指的是“第N个匹配的子元素”,如果你有一个结构如下含义:

<div>
    <h1>Hello</h1>

    <p>Paragraph</p>

    <p>Target</p>
</div>

然后p:nth-child(2)将选择第二个也是ap的孩子(即p带有“ Paragraph”的)。 p:nth-of-type将选择第二个 匹配的p元素(即我们的Target p)。

您之所以中断,是因为type是指元素的类型(即div),但是第一个div与您提到的规则(.row .label)不匹配,因此该规则不适用。

原因是,CSS是从右到左解析的,这意味着浏览器首先在上查找:nth-of-type(1),确定它搜索type的元素div,这也是该类型.row的第一个元素,该元素与第一个.icon元素相匹配。然后,它会读取该元素应具有的.label类,该类与上述任何内容都不匹配。

如果要选择第一个label元素,则需要将所有标签包装在它们自己的容器中,或者简单地使用nth-of-type(3)(假设总会有2个图标)。

另一个选择是(悲伤地)使用…等待… jQuery:

$(function () {
    $('.row .label:first')
        .css({
            backgroundColor:"blue"
        });
});


 类似资料:
  • 我在Angular 6项目中使用了

  • 我是新手。我正在开发一个测验应用程序,并拥有以下三个dart文件: 主要的飞奔 question.dart answer.dart 当我在android studio中的android上运行应用程序时,出现以下错误: ══╡ 小部件库捕获的异常╞═══════════════════════════════════════════ 生成MyApp时引发了以下类型的错误(脏,状态:_MyAppSta

  • 我有实体和rest控制器,当我向控制器发出请求时,它会引发以下异常: java.lang.:参数值[1]不匹配预期类型[java.lang.整数(n/a)] 我的控制器: 我的实体具有int类型id:

  • 问题内容: 我正在尝试使用By.cssSelector来捕获类c3的第n个dom元素,其结构如下: 测试我的CSS选择器时,我变得越来越困惑。此选择器正确选择c2 / c3的第二个实例: 而: 什么都不选。 更糟糕的是,将其转换为硒,我似乎始终没有为所有3个版本找到任何东西。有很多选择这些元素的替代方法(我可能只做XPATH),但是我对nth-of- type的缺乏了解使我发疯。谁能提供关于第二个

  • 问题内容: 我正在尝试使用By.cssSelector来捕获类c3的第n个dom元素,其结构如下: 测试我的CSS选择器时,我变得越来越困惑。此选择器正确选择c2 / c3的第二个实例: 而: 什么都不选。 更糟糕的是,将其翻译成selenium,我似乎始终没有为所有3个版本找到任何东西。有很多选择这些元素的替代方法(我可能只做XPATH),但是我对nth-of- type的缺乏了解使我发疯。谁能