关于伪类选择器first-child和first-of-type

逼自己说几句


这篇文章是从我上一个简书账号里粘贴过来的,当时第一次学CSS选择器,记得很清楚,对于first-childfitst-of-type确实比较懵,于是整理了他们俩的区别。

记得当时总结出来的时候有一种茅塞顿开的感觉。

所以还是说,自学,还是需要不断去写技术性博客,真的很有用。

两者的定义


  • :first-child 选择器用于选取属于其父元素的首个子元素的指定选择器。
  • :first-of-type 选择器匹配属于其父元素的特定类型的首个子元素的每个元素。

定义的解析


  • :first-child 当出现 p:first-child 时,其所匹配的元素必须符合以下两点:1.必须为p标签;2.必须为某个父元素的第一个子元素

  • :first-of-type 当出现 p:first-of-type 时,其所匹配的元素为所有子元素中的第一个p标签(不论该p标签是否为第一个子元素)

定义的深度解析


一个父元素会包括一个或多个子元素

<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-of-typefirst-child 的区别在于它匹配的是该元素类型的第一个子元素,可能这个元素并不是该父元素的第一个子元素

如果 XXX:first-child 存在,任何的 XXX:first-child 肯定是 XXX:first-of-type

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 ,那么这个 h1 仍然是其父元素的第一个子元素,但是已经不是第一个 div 了。第二行的 div 是其父元素的第二个子元素,而且是第一个 div 。具体的注释请看如下的代码:

<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 在任何情况下都只能匹配到一个元素,而 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>

实例运用


代码地址

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>first-child对比first-of-type</title>
<style>
.parent :first-child{
  color: red;
}
.parent :first-of-type{
  background: yellow;
}
.parent div:first-child{
  font-size: 50px;
}
.parent div:nth-child(3){
  text-decoration: line-through;
}
.parent div:first-of-type{
  border: 1px green solid;
}
.parent p:first-child{
  text-decoration: underline;
}
</style>
</head>
<body>
<div class="parent">
  <p>child1</p>
    <div>child2</div>
    <div>child3</div>
    <div>child4</div>
  </div>
</body>
</html>

运行结果:

详细分析以上代码得出:

.parent :first-child{
  color: red;
}

以上代码匹配parent这个父元素的首个子元素,所以child1变成了红色

.parent :first-of-type{
  background: yellow;
}

以上代码匹配parent这个父元素的所有标签的首个子元素,其中parent的第一个子元素是p,同时也是第一个p,parent的第二个子元素是div,同时也是第一个div,所以child1和child2的背景颜色变成了黄色

.parent div:first-child{
  font-size: 50px;
}

以上代码匹配parent这个父元素的首个子元素,并且这个首个子元素必须为div,然而parent这个父元素的首个子元素为p,所以没有任何的元素被匹配上

.parent div:nth-child(3){
  text-decoration: line-through;
}

以上代码匹配parent这个父元素的第三个子元素,并且这个子元素为div,所以child3有删除线的效果

.parent div:first-of-type{
  border: 1px green solid;
}

以上代码匹配parent这个父元素的第一个div子元素,所以child2有实现框的效果

.parent p:first-child{
  text-decoration: underline;
}

以上代码匹配parent这个父元素的第一个子元素,并且这个子元素为p,所以child1有下划线的效果


参考文章:

(完)

文档信息

  • 自由转载-非商用-非衍生-保持署名
  • 发表日期:2016年9月8日
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,456评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,370评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,337评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,583评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,596评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,572评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,936评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,595评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,850评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,601评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,685评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,371评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,951评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,934评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,167评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,636评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,411评论 2 342

推荐阅读更多精彩内容