先看定义
:nth-of-type(n) 选择器匹配属于父元素的特定类型的第 N 个子元素的每个元素.
:nth-child(n) 选择器匹配属于其父元素的第 N 个子元素,不论元素的类型。
看两者的差异就能大致明白了,nth-dhild在执行匹配的时候,不会注重特定的类型,而nth-of-type()则会匹配指定的类型,看下面的两个例子能解释一切
<!DOCTYPE html>对应的页面展示为
<html>
<head>
<style>
p:nth-child(2)
{
background:#ff0000;
}
</style>
</head>
<body>
<h1>这是标题</h1>
<p>第一个段落。</p>
<p>第二个段落。</p>
<p>第三个段落。</p>
<p>第四个段落。</p>
<p><b>注释:</b>Internet Explorer 不支持 :nth-child() 选择器。</p>
</body>
</html>
n
p:nth-child(2) 根据定义:选择器匹配属于其父元素的第 N 个子元素,不论元素的类型 则匹配的顺序是,第一个 <h1>这是标题</h1> 第二个:<p>第一个段落。</p> 所以第二个标红了
如果我们用p:nth-of-type,则不会去处理h1标签,只会关注特定类型p
<!DOCTYPE html>
<html>
<head>
<style>
p:nth-of-type(2)
{
background:#ff0000;
}
</style>
</head>
<body>
<h1>这是标题</h1>
<p>第一个段落。</p>
<p>第二个段落。</p>
<p>第三个段落。</p>
<p>第四个段落。</p>
<p><b>注释:</b>Internet Explorer 不支持 :nth-child() 选择器。</p>
</body>
</html>
展示的效果如下图:
以上就是这两个的主要区别了