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

:first-child和:first-of-type有什么区别?

陆子默
2023-03-14
问题内容

我不能告诉之间的区别element:first-childelement:first-of-type

例如说,您有一个div

div:first-child
<div>作为其父级的第一个孩子的所有元素。

div:first-of-type
→所有<div>元素都是<div>其父元素的第一个元素。

这似乎完全一样,但是它们的工作方式不同。

有人可以解释一下吗?


问题答案:

父元素可以具有一个或多个子元素:

<div class="parent">
  <div>Child</div>
  <div>Child</div>
  <div>Child</div>
  <div>Child</div>
</div>

在这些孩子中,只有一个可以成为第一个。与之匹配:first-child

<div class="parent">
  <div>Child</div> <!-- :first-child -->
  <div>Child</div>
  <div>Child</div>
  <div>Child</div>
</div>

:first-child和之间的区别:first-of-type是,:first-of- type它将匹配其元素类型的第一个元素,该元素类型在HTML中由其标记名表示, 即使该元素不是parent的第一个子元素也是如此
。到目前为止,我们正在查看的子元素全部为divs,但是请耐心等待,我将稍作介绍。

就目前而言,反过来也成立:任何事情:first-child都是:first-of- type必要的。由于这里的第一个孩子也是第一个孩子div,它将匹配 两个 伪类以及类型选择器div

<div class="parent">
  <div>Child</div> <!-- div:first-child, div:first-of-type -->
  <div>Child</div>
  <div>Child</div>
  <div>Child</div>
</div>

现在,如果您将第一个孩子的类型从更改为div其他名称,例如h1,它将仍然是第一个孩子,但div显然不再是第一个孩子。相反,它成为第一个(也是唯一一个)h1。如果div在同一个父对象中的第一个孩子之后还有其他元素,则这些div元素中的第一个将匹配div:first- of-type。在给定的示例中,在第div一个孩子更改为之后,第二个孩子成为第一个孩子h1

<div class="parent">
  <h1>Child</h1>   <!-- h1:first-child, h1:first-of-type -->
  <div>Child</div> <!-- div:nth-child(2), div:first-of-type -->
  <div>Child</div>
  <div>Child</div>
</div>

请注意,这:first-child等效于:nth-child(1)

这也意味着,尽管任何元素一次只能具有一个匹配的子元素:first-child,但与:first-of- type伪类匹配的子元素数目可以和将会具有的子元素数目一样多。在我们的示例中,选择器.parent > :first-of- type(具有隐式*限定:first-of-type伪数)将匹配 两个 元素,而不仅仅是一个:

<div class="parent">
  <h1>Child</h1>   <!-- .parent > :first-of-type -->
  <div>Child</div> <!-- .parent > :first-of-type -->
  <div>Child</div>
  <div>Child</div>
</div>

对于:last-child:last-of-type:last-child也是同样的道理:last-of-type,因为必然没有任何其他元素在其父元素之内,因此任何也是必要的。但是,因为最后一个div也是最后一个孩子,所以h1即使它是最后一个孩子,也不能成为最后一个孩子。

:nth-child():nth-of-type()任意整数参数(如上述:nth-child(1)示例)一起使用时,和原理上的功能非常相似,但它们之间的区别在于匹配的元素的潜在数量:nth-of-type()。这在详细覆盖的第n个孩子(2)和P:第n-的式(2)什么是P之间的区别?



 类似资料:
  • 本文向大家介绍举例说明伪类:nth-child、:first-child与:first-of-type这三者有什么不同?相关面试题,主要包含被问及举例说明伪类:nth-child、:first-child与:first-of-type这三者有什么不同?时的应答技巧和注意事项,需要的朋友参考一下 :nth-child(n): 选择当前元素的父元素下的第n个子元素(从1开始) :nth-of-type

  • 描述 (Description) :first-child伪类用于向一个元素添加特殊效果,该元素是某个其他元素的第一个子元素。 要使:IE中的第一个孩子工作必须在文档顶部声明。 请注意 - 伪类名称不区分大小写。 伪类与CSS类不同,但它们可以组合在一起。 例子 (Example) 例如,要缩进所有元素的第一段,您可以使用此定义 - <html> <head> <style ty

  • 本文向大家介绍css3的:nth-child和:nth-of-type的区别是什么?相关面试题,主要包含被问及css3的:nth-child和:nth-of-type的区别是什么?时的应答技巧和注意事项,需要的朋友参考一下 :nth-child(n) 选择器匹配属于其父元素的第 N 个子元素,不论元素的类型。 :nth-of-type(n) 选择器匹配属于父元素的特定类型的第 N 个子元素。 n

  • Question lintcode: First Position of Target Problem Statement For a given sorted array (ascending order) and a target number, find the first index of this number in O(log n) time complexity. If the ta

  • Overview The goal of this tutorial is to introduce you in writing and subsequently generating effective documentation with phpDocumentor. Writing a DocBlock A DocBlock is a piece of inline documentati

  • 本文向大家介绍::first-letter有什么应用场景?相关面试题,主要包含被问及::first-letter有什么应用场景?时的应答技巧和注意事项,需要的朋友参考一下 段落首字放大效果