(CSS):last-child与:last-of-type区别

对比了一下W3CSchool 中针对伪类选择器 :last-child 以及 :last-of-type的描述,如下:

:last-child      p:last-child      选择属于其父元素最后一个子元素每个 <p> 元素。
:last-of-type    p:last-of-type    选择属于其父元素的最后 <p> 元素的每个 <p> 元素。

说句老实话,在不懂这两个关系的时候,越看这两句描述,越是别扭,绕口,难懂,查阅网上资料搞懂了以后,就觉得说的还是蛮有道理的。

以一段代码为例:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>last-child 和 last-of-type区别</title>
    <style type="text/css">
        p:last-child{
            color: red;
        }

        p:last-of-type{
            color: blue;
        }

    </style>
</head>
<body>
    <div>
        <p>第一行</p>
        <p>第二行</p>
        <p>第三行</p> 
        <span>我是测试行</span>
    </div> 
</body>
</html>

运行的结果显示:没有任何一行显示为红色,第三行显示为蓝色。或许你可能会觉得两个选择器选中的是同一行,但是当你注释掉蓝色选择器的时候会发现,红色依然未被选中。

其实红色未被选中的原因很简单,上篇文章已经讲过,这里简单的描述一下

:last-child选择父节点最后一个子节点,并且与选择器进行匹配, 父节点div的最后一个节点是span,而匹配的选择器是p,两者不对应所以匹配不上。

而另外一个选择器

:last-of-type是从父节点的子节点中寻找最后一个与选择器相同的子节点,也就是说,这次寻找的并不是最后一个节点,而是最后一个P元素节点,所以只能找到第三行了。

猜你喜欢

转载自www.cnblogs.com/whbniit/p/8996987.html
今日推荐