CSS 中 :first-child 和 :first-of-type 选择器的区别


层叠样式表 (CSS) 是一种用于在网页开发过程中为网页设置样式的基本语言。它使开发人员能够自定义布局并添加视觉效果。

CSS 选择器是一种重要的工具,它允许开发人员选择或匹配 HTML 元素并向其应用样式。:first-child:first-of-type 是最常用的选择器,开发人员经常会混淆它们。有些人可能错误地将它们互换使用。

虽然当应用于元素时它们看起来非常相似,但它们之间存在一些差异,这些差异可能会影响您的网页设计(如果使用不当)。在本文中,我们将讨论这两个选择器,它们的工作原理以及它们之间的区别。

:first-child 选择器类

:first-child 选择器是伪类 CSS 选择器,它选择或匹配父元素的第一个子元素。这可以防止开发人员为父元素中的每个元素分配类或 ID。

语法

element:first-child {
   CSS declarations;
}

示例

假设您想在以下示例中为 div 元素的第一个子元素添加特定样式:

<html>
<head>
   <style>
      * {
         margin: 10px;
         padding: 3px;
      }
      p:first-child {
         color: red;
         font-size: 19px;
      }
   </style>
</head>
<body>
   <h1> :first-child Selector </h1>
   <div>
      <p> First child of the div element. </p>
      <p> Second child of the div element. </p>
      <p> Third child of the div element. </p>
   </div>
</body>
</html>

在上面的示例中,我们使用 p:first-child 选择所需的元素,并将其文本设置为红色。

:first-of-type 选择器类

:first-of-type 是一个伪类 CSS 选择器,它选择或匹配其父元素内特定类型的第一个子元素。这里,子元素的类型是决定因素。

语法

element:first-of-type {
   CSS declarations;
}

示例

假设您想应用特定样式到第一个,您可以按照以下步骤操作:

<html>
<head>
   <style>
      * {
         margin: 10px;
         padding: 3px;
      }

      h2:first-of-type {
         color: green;
         text-decoration: underline;
      }
   </style>
</head>
<body>
   <h1> :first-of-type Selector </h1>
   <div>
      <p> First child of the div element. </p>
      <h2> First-of-type element </h2>
      <p> Third child of the div element. </p>
      <p> Fourth child of the div element. </p>
   </div>
</body>
</html>

在上面的示例中,我们使用 h2:first-of-type 选择父 div 元素的第一个 h2 子元素。第一个 h2 子元素为绿色并带下划线。在这里,我们可以清楚地看到,first-of-type 元素不是父 div 元素的第一个子元素。让我们深入了解它们之间的区别。

:first-child 和 :first-of-type 选择器之间的区别

这两个选择器之间的主要区别在于,:first-child 选择器用于选择元素的第一个子元素,而不管其类型、类或 ID 如何。

:first-of-type 选择器用于选择特定类型的第一个子元素,该类型由其标签名称(如 h2、h3、p 等)在其父元素中表示。

:first-child 也可以是 :first-of-type 元素。让我们举个例子。

<div>
   <p> Child 1 </p> <!-- First child of div element and p:first-of-type element-->
   <p> Child 2 </p>
   <p> Child 3 </p>
   <p> Child 4 </p> 
</div>

这里,Child 1 是 div 元素的第一个子元素。此外,它是父 div 元素中 p 类型的第一个元素。

但是,:first-of-type 子元素并不总是父元素的 :first-child。当您更改子元素的类型时,就会发生这种情况。请参阅以下示例。

<div>
   <p> Child 1 </p>  <!-- p:first-child of div element and p:first-of-type -->
   <h3> Child 2 </h3>  <!-- h3:first-of-type element -->
   <p> Child 3 </p>
   <p> Child 4 </p>
</div>

这里,Child 1 是 div 元素的第一个子元素。Child 2 是 div 元素的第二个子元素,也是父 div 元素中 h3 类型的第一个子元素。

这意味着任何元素一次只能有一个 :first-child 元素。如果它包含不同类型的子元素,则它可以有多个 :first-of-type 子元素。让我们看一个例子。

<div>
   <p> Child 1 </p> <!-- p:first-child element and p:first-of-type element -->
   <h3> Child 2 </h3> <!-- h3:first-of-type element -->
   <p> Child 3 </p>
   <p> Child 4 </p> 
   <h2> Child 5 </h2>  <!-- h2:first-of-type element -->
   <p> Child 6 </p>
</div>

结论

在本文中,我们讨论了 CSS 的两个强大的选择器,即 :first-child:first-of-type。它们用于选择网页中的特定元素。虽然这两个选择器看起来相似,但它们执行不同的功能,并根据输出进行使用。此处讨论的概念也可以应用于 :last-child:last-of-type 选择器。通过理解这些选择器的概念,您可以创建更具视觉吸引力和用户友好的网站。

更新于: 2023年4月28日

2K+ 次浏览

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告