DigitalOcean 为您旅程的每个阶段提供云产品。开始使用 200 美元的免费积分!
:first-child
选择器允许您定位另一个元素内部的第一个元素。它在 CSS 选择器级别 3 规范 中被定义为“结构性伪类”,这意味着它用于根据其与父级和兄弟级内容的关系来设置内容的样式。
假设我们有一篇文章,并希望使第一个段落更大 - 就像“导语”或一段介绍性文字
<article>
<p>First paragraph...</p>
<p>Lorem ipsum...</p>
<p>Dolor sit amet...</p>
<p>Consectetur adipisicing...</p>
</article>
与其赋予它一个类(例如 .first
),我们可以使用 :first-child
来选择它。
p:first-child {
font-size: 1.5em;
}
使用 :first-child
与 :first-of-type
非常相似,但存在一个关键区别:它不太具体。:first-child
仅尝试匹配父元素的直接第一个子元素,而 first-of-type
将匹配指定元素的第一个出现,即使它在 HTML 中不是绝对的第一个。在上面的示例中,结果将相同,仅仅是因为 article
的第一个子元素也恰好是第一个 p
元素。这揭示了 :first-child
的强大功能:它可以识别相对于所有兄弟元素的元素,而不仅仅是相同类型的兄弟元素。
下面的更完整的示例演示了 :first-child
和一个相关的伪类选择器 :last-child
的用法。
Check out this Pen!
其他资源
浏览器支持
Chrome | Safari | Firefox | Opera | IE | Android | iOS |
---|---|---|---|---|---|---|
所有 | 3.2+ | 所有 | 9.5+ | 9+ | 所有 | 所有 |
:first-child
在 CSS 选择器模块 3 中引入,这意味着旧版本的浏览器不支持它。但是,现代浏览器的支持非常出色,并且新的伪选择器在生产环境中被广泛使用。如果您需要旧版浏览器的支持,请使用 IE 的 polyfill,或者以渐进增强的方式使用这些选择器,建议您这样做。
你好。
:first-child 在 IE 7+ 中有效,并且是在 CSS2 中引入的。**
您可能指的是 CSS3 中的高级选择器***,例如:first-of-type。
https://caniuse.cn/css-sel2
** http://www.w3.org/TR/CSS2/selector.html#first-child
*** https://caniuse.cn/css-sel3
—
Mitică
确实!
更新信息怎么样?
谢谢
您好,
很棒的教程,谢谢。
我在上述代码方面遇到了一些问题,此 CSS 在 Chrome 中无法运行(我还没有在其他浏览器中检查)。
另外,如果 HTML 元素像这样
如何仅为第一个 div.sticky 设置样式?
此致,
Wirka
nth-child 怎么样?您可以在父级范围内指定元素的类型及其相对于其同级元素的位置。像这样
article div:nth-child(2)
这将目标定位到
article
标签内的第二个 div(而不是第二个子元素)。查看 Chris 关于 nth-child 的精彩文章,了解一些看似复杂的目标元素的巧妙解决方案。-Chris
我建议您执行以下操作
article div.sticky:first-child
这样,您可以明确表示您想要具有类
sticky
的第一个div
。如果您稍后添加另一个div
,如果您使用 Chris Hardwick 的答案,可能会遇到问题。这不是一个糟糕的答案,请不要误会我的意思。我在使用带有标签的 fisrt-child 时遇到了麻烦,但我发现了 firts-of-type 伪类。非常感谢 :)
`article.mapa{
display: inline-block;
width: 390px;
margin: 0px;
padding: 0px;
}
article.mapa:first-of-type{margin-right:16px;}`
不确定是谁写了这篇文章,但浏览器信息完全错误。:first-child 在 CSS2 中引入,并在 IE7+ 中有效。 https://w3schools.org.cn/cssref/sel_firstchild.asp。这篇文章已经几年了,希望它能尽快更新,以免误导读者。
作者姓名在文章顶部,以及发布日期。
嘿,Chris,
IE7 支持此功能。您将其列为 9+。我最近也了解到这一点——:last-child 仅在 IE9+ 中受支持,但 :first-child 在 IE7+ 中受支持。顺便说一句,我认为这是一个很棒的信息!
https://w3schools.org.cn/cssref/sel_firstchild.asp
谢谢,
Justin
您是否考虑过为什么必须指定应由 :first-child 定位的元素的类型?换句话说,为什么我们不能只说:div *:first-child 表示 div 中的任何元素(类型未指定),它是第一个元素?
您不必指定类型,删除星号,像这样使用它
div > :first-child
您知道如何定位未指定 div 的第一个子元素(它不是元素)吗?像这样:
some text ..
我只想更改“some text”的样式。
是的,确实会发生这种情况