css 伪类选择器:first-child与:first-of-type的区别
css :first-child选择器匹配属于父元素中第一个子元素。
css :first-of-type选择器匹配元素其父级是特定类型的第一个子元素。
对于很多朋友来说,上面的两句解释并不是很清楚,下面小编通过实例向大家解释first-child和first-of-type。
先看一下:first-child实例:
<!DOCTYPE html>
<html>
<head>
<style>
p:first-child
{
background-color:yellow;
}
</style>
</head>
<body>
<p>码农教程</p>
<h1>java教程</h1>
<p>php教程</p>
/* http://www.manongjc.com/article/1305.html */
<div class="div1">
<span>css教程</span>
<p>mysql教程</p>
<p>html教程</p>
</div>
<div class="div2">
<p>sql教程</p>
<p>js教程</p>
</div>
</body>
</html>
运行结果图:
为什么"码农教程"和"sql教程"会被选中呢?
因为p:first-child是匹配所有html文档中父元素的第一个子元素是p的元素,这里要注意两点:
- 第一,是在整个HTML文档中匹配
- 第二,父元素的第一个子元素必须是p元素,如果不是p元素就无法匹配到。
上面实例中"<p>码农教程</p>"作为body元素的第一个子元素,并且该子元素也是p标签,所以会被匹配到。
"<p>mysql教程</p>"作为div元素(class为div1)的子元素,虽然它是p元素,但是它不是div(class为div1)的第一个子元素,所以没有被匹配到。
"<p>sql教程</p>"作为div元素(class为div2)的第一个子元素,并且也是p元素,所以会被匹配到。
下面再来看一下first-of-type实例:
<!DOCTYPE html>
<html>
<head>
<style>
p:first-of-type
{
background-color:yellow;
}
</style>
</head>
<body>
<p>码农教程</p>
<h1>java教程</h1>
<p>php教程</p>
<div>
<span>css教程</span>
<p>mysql教程</p>
<p>html教程</p>
</div>
<div>
<p>sql教程</p>
<p>js教程</p>
</div>
</body>
</html>
运行结果如下:
p:first-of-type需要注意两点:
- 第一,是在整个HTML文档中匹配
- 第二,p:first-of-type选取的是父元素里的第一个子元素p标签,并不要求父元素的第一个子元素必须是p标签。
上面实例中,body的第一个p标签子元素为"<p>码农教程</p>",所以该元素会被选中。
同理“<p>mysql教程</p>”和"<p>sql教程</p>"作为div(class为div1和class为div2)元素的第一个p标签,所以也会被选中.
综上所述:
:first-child 匹配的是某父元素的第一个子元素,可以说是结构上的第一个子元素。
:first-of-type 匹配的是某父元素下相同类型子元素中的第一个,比如 p:first-of-type,就是指所有类型为p的子元素中的第一个。这里不再限制是第一个子元素了,只要是该类型元素的第一个就行了。
:first-child要求子元素的第一个元素必须是特定标签,而:first-of-type并没有要求这点。
- HTML 教程
- HTML 简介
- html div 标签介绍
- html span 标签介绍
- html a 超链接标签
- HTML Br换行标签介绍
- HTML P段落标签介绍
- HTML br与p标签区别
- Html H 标题标签
- html px em pt长度单位
- HTML form 标签
- HTML radio 单选框
- HTML B 加粗标签
- HTML strong加粗粗体标签
- HTML em 强调标签
- HTML i 斜体标签
- HTML u下划线标签
- HTML s 删除线标签
- Html img 图片标签
- Html上标注sup与下标注sub标签
- HTML nobr 禁止换行标签
- HTML hr 水平线标签
- HTML label 标签
- HTML input 标签
- HTML textarea 标签
- HTML select下拉列表标签
- HTML checkbox 多选框
- HTML font color 标签
- HTML iframe 框架标签
- HTML Table 表格
- HTML dl dt dd 标签
- HTML ol li有序列表标签
- HTML ul li 无序列表标签
- HTML 注释
- CSS 教程
- CSS 简介
- CSS 语法
- CSS Id 和 Class选择器
- CSS 样式的创建
- CSS background 背景介绍
- CSS 文本样式
- CSS font 字体
- CSS A 链接
- CSS ul ol列表样式
- CSS TABLE 样式
- CSS 框模型
- CSS border 边框
- CSS Outlines 轮廓
- CSS 外边距 Margin
- CSS Padding 内边距
- CSS 分组和嵌套选择器
- CSS 尺寸 (Dimension)
- CSS Display 属性
- CSS Position 定位
- CSS Float 浮动
- CSS 水平对齐(Horizontal Align)
- CSS 组合选择符
- CSS 伪类
- CSS 伪元素
- CSS 导航栏
- CSS 下拉菜单
- CSS 图片廊
- CSS 图像透明/不透明
- CSS sprite 图像拼合技术
- CSS 媒体类型
- CSS 属性选择器
- CSS 实例