child伪类选择符入门(3)

      前面已经用两篇介绍了first-child、last-child和noly-child三个child伪类选择符,下面我为大家介绍最后两个child伪类选择符nth-child(n)和nth-last-child(n)。
       先看一下E:nth-child(n),W3C上的说明为:匹配父元素的第n个子元素E,假设该子元素不是E,则选择符无效。
       也就是说,这个选择符要把它的选择符E和它的位置结合对应起来才能使用。
       示例一:
       HTML代码:
<div>
    <p>第1个p</p>
    <p>第2个p</p>
    <span>第1个span</span>
    <p>第3个p</p>
</div>
       CSS代码:
    p:nth-child(2){color:#f00;}
    p:nth-child(3){color:#f00;}
       结果:

       结果就是第二个P变成个红色,而第三个p并没有变成红色,因为div下第三个child是span元素,并不是p元素,第三个p元素属于div下第四个child元素。选择符没有和元素所在的位置对应起来,所以不会被匹配到。
       (如果想匹配到父元素的第一个E元素,但是不确定第1个子元素是否为E,可以使用E:first-of-type或者E:nth-of-type(1),我在下面的博客中会单独写一篇出来)。
        如果修改一下CSS就会得到不同的结果:
       示例二:
       CSS代码:
        p:nth-child(2) {color: #f00;}
        span:nth-child(3) {color: #00f;}
        p:nth-child(4) {color: #f00;}
      结果:

       这样第三个child元素为span,所以span:nth-child(3)正好匹配带span标签,变成蓝色,而 p:nth-child(4)匹配到最后一个p标签,变为了红色。
       nth-child(n)还有很多的扩展用法,我们来看一下。
       修改上面的CSS代码:
        p:nth-child(2n) {
            color: #f00;
        }

       这样就只会匹配在偶数位置的元素。2n+1则会匹配在奇数位置的元素。当然也可以使用odd(偶数)和even(奇数)这样的关键之。像这样:E:nth-child(odd).
       然而正相反,E:nth-last-child(n)表示匹配父元素的倒数第n个子元素E,假设该子元素不是E,则选择符无效。
       同样的,选择符需要和元素所在的位置匹配起来。
       示例三:
    HTML代码:
    <div>
        <p>第1个p</p>
        <p>第2个p</p>
        <span>第1个span</span>
        <p>第3个p</p>
    </div>
       CSS代码:
        p:nth-last-child(3) {
            color: #f00;
        }

        span:nth-last-child(2) {
            color: #00f;
        }

        p:nth-last-child(1) {
            color: #f00;
        }
       结果:

       这样,使用nth-last-child(n)只是在数元素的时候倒过来就可以了。用法和nth-child是一样的。
       可能我们会觉得只需要使用nth-child(n)就可以了了,完全没必要使用nth-last-child(n),其实这是非常错误的想法,有时我们可能需要js向页面中添加标签,这样顺序就会变化,如果只使用nth-child就会造成错误,所以两个结合起来呀才能更完美的解决问题。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值