• CSS3之 :nth-child(n)语法讲解


    语法:

    E:nth-child(n){ sRules }

    * 匹配父元素索引为n的子元素E

    :nth-child(n) 让你匹配到父元素的任一子元素:

    Figure 1:
    <section id="demo"> <h1>选取ul第一个子元素li</h1> <ul> <li>如果我是红色,说明你的选择到了我,浏览器还颇为先进</li> <li>落后的浏览器</li> <li>落后的浏览器</li> <li>落后的浏览器... #demo li:nth-child(1){ color:#f00; }

      * 除lte IE8浏览器外,你都能看到第一个li被匹配到,且文本为红色;

    重点:匹配到的是父元素的子元素:

    Figure 2:
    <section id="demo"> <h1>选取#demo第一个子元素p</h1> <p>如果你以为我会被选中变红,那你就猜错了</p> <p>落后的浏览器</p> <p>落后的浏览器</p> <p>落后的浏览器... #demo p:nth-child(1){ color:#f00; }

      * 上诉代码是不是让你感觉第一p元素会被匹配到?如果你真这么想,那你就真的错了,这里没有任何一个元素会被匹配到;

    Figure 3:
    #demo p:nth-child(2){ color:#f00; }

      * 将Figure #2中的CSS伪类 #demo p:nth-child(1) 改成 #demo p:nth-child(2) 你会发现第一个p才被选中变红,why? 不急,我们再往下看看;

    Figure 4:
    #demo :nth-child(2){ color:#f00; }

      

    * 我们再将Figure #3中的CSS伪类 #demo p:nth-child(2) 改成 #demo :nth-child(2) ,把p tag从选择器中去除,你会发现第一个p同样被选中变红。貌似这个才是能符合我们正常思维的,因为第1个p是#demo的第二个子元素;也就是说在本 DEMO 中 #demo p:nth-child(2) 与 #demo :nth-child(2) 是等价的;

    * 你觉得这难理解么?CSS选择器是从右到左查询的,我猜你已经知道了这个。E:nth-child(n) 表示的是匹配父元素第2个子元素,如果第2个子元素正好是E,则被匹配到;

    * 相信现在 Figure #2 为什么没有任何元素被选中,你已经可以理解了。因为#demo的第一个子元素并不是p,而是一个h1,所以这个选择器是无效的;

    * 而 Figure #3 选择器 #demo p:nth-child(2) 表示匹配 #demo 的第2个子元素p,此时 #demo 的第2个子元素正好是一个p,所以被匹配到;

    * 相对于 Figure #2 和 Figure #3,本例中的 #demo :nth-child(2) 表示直接选择 #demo 第2个子元素,不论这个子元素是任何标签,都将被匹配到;

  • 相关阅读:
    Gitblit 的安装使用
    PLSQL 美化规则文件详解
    SQL Server Agent的作用
    使用C#创建Widows服务
    关于VS编译DevExpress默认产生几个多余的语言包的问题解决
    (转)查询A、B表中,A表中存在B表不存在的数据
    子类构造、析构时调用父类的构造、析构函数顺序
    ACCDB与MDB的读取区别
    vue中如何动态添加readonly属性
    windows下生成文件夹目录结构
  • 原文地址:https://www.cnblogs.com/sdgf/p/4736721.html
Copyright © 2020-2023  润新知