zoukankan      html  css  js  c++  java
  • css :nth-of-type选择器为什么不起作用!!!

    发现问题

    今天工作才发现的,原来我一直就理解错了!!
    MDN官网对这个选择器的的定义是:

    :nth-of-type() 这个 CSS 伪类是针对具有一组兄弟节点的标签, 用 n 来筛选出在一组兄弟节点的位置。
    /* 在每组兄弟元素中选择第四个

    元素 */
    p:nth-of-type(4n) {
    color: lime;
    }

    重点来了!!!他说明的是标签,针对的只是标签,因此,比如网上关于这个问题的代码:

    // html
    <h1>123</h1>
    <p>123</p>
    <h1 class="test">123</h1>
    <h1 class="test">123</h1>
    
    // style
    .test:nth-of-type(1) {
    background: pink;
    }
    

    是起不来任何作用的!!!因为该选择器本质上只选择兄弟节点的标签 h1,不是选择的标签+类 h1+test,因此选择的是同级的三个 h1 标签。

    解决问题

    因此要正确选择第一个带有 test 类的 h1 标签,就应该是:

    // style 选择 h1 标签第二个
    .test:nth-of-type(2) {
    background: pink;
    }
    

    本质上这个例子和直接书写成 h1 标签是没有任何区别的,只是说类选择器能够让我们选择特定的级别标签,而不是选择整个html代码中的h1标签。

    h1:nth-of-type(2) {
    background: pink;
    }
    

    总结思考

    通过这个例子更加加深了我对css选择器的理解。目前css2和css3css类似的选择器确实只支持元素标签,不支持类名ID,据了解css4会增加一个ntn-match(),会支持上述的类名ID选择兄弟节点的功能。

    参考文献

    MDN:nth-of-type
    :nth-of-type()不起作用

  • 相关阅读:
    Django-ORM和MySQL事务及三大范式介绍
    django-视图层与模板层
    django初步--+urls解析
    django前戏
    python web开发中跨域问题的解决思路
    MySQL显示ERROR 2003 (HY000): Can't connect to MySQL server on 'localhost' (10061)解决方法
    xpath
    HTTP请求方法
    JavaScript 对象
    JavaScript 关键字
  • 原文地址:https://www.cnblogs.com/cqkjxxxx/p/15093218.html
Copyright © 2011-2022 走看看