zoukankan      html  css  js  c++  java
  • 深入理解css3中nth-child和 nth-of-type的区别

    在css3中有两个新的选择器可以选择父元素下对应的子元素,一个是:nth-child 另一个是:nth-of-type。 但是它们到底有什么区别呢? 

    其实区别很简单::nth-of-type为什么要叫:nth-of-type?因为它是以"type"来区分的。也就是说:ele:nth-of-type(n)是指父元素下第n个ele元素,
    而ele:nth-child(n)是指父元素下第n个元素且这个元素为ele,若不是,则选择失败。
    文字未免听起来比较晦涩,便于理解,这里附上一个小例子:
    复制代码
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>demo</title>
    </head>
    <style>
        .demo li:nth-child(2){
            color: #ff0000;
        }
        .demo li:nth-of-type(2){
            color: #00ff00;
        }
    </style>
    <body>
    <div>
        <ul class="demo">
            <p>zero</p>
            <li>one</li>
            <li>two</li>
        </ul>
    </div>
    </body>
    </html>
    复制代码
    结果如下:
    上面这个例子,.demo li:nth-child(2)选择的是<li>one</li>节点,而.demo li:nth-of-type(2)则选择的是<li>two</li>节点。
    但是如果在nth-child和 nth-of-type前不指定标签呢?
    复制代码
    .demo :nth-child(2){
            color: #ff0000;
        }
        .demo :nth-of-type(2){
            color: #00ff00;
        }
    复制代码

    这样又会是什么结果呢,看下html结构:

    复制代码
        <ul class="demo">
            <p>first p</p>
            <li>first li</li>
            <li>second li</li>
            <p>second p</p>
        </ul>
    复制代码
    结果:

    如上可见,在他们之前不指定标签类型,:nth-child(2) 选中依旧是第二个元素,无论它是什么标签。而 :nth-type-of(2) 选中了两个元素,分别是父级.demo中的第二个p标签和第二个li标签,由此可见,不指定标签类型时,:nth-type-of(2)会选中所有类型标签的第二个。

    我们已经了解了nth-child和 nth-of-type的基本使用与区别,那么更进一步nth-of-type(n)与nth-child(n)中的n是什么呢?
    nth-of-type(n)与nth-child(n)中的n可以是数字、关键词或公式。
    数字:也就是上面例子的使用,就不做赘述。
    关键词:Odd 、even
    Odd 和 even 是可用于匹配下标是奇数或偶数的子元素的关键词
    注意:第一个子元素的下标是 1
    在这里,我们为奇数和偶数 p 元素指定两种不同的背景色:
    复制代码
    p:nth-of-type(odd)
    {
    background:#ff0000;
    }
    p:nth-of-type(even)
    {
    background:#0000ff;
    }
    复制代码

    公式:或者说是算术表达式

    使用公式 (an + b)。描述:表示周期的长度,n 是计数器(从 0 开始),b 是偏移值。

    在这里,我们指定了下标是 3 的倍数的所有 p 元素的背景色:

    p:nth-of-type(3n+0)
    {
    background:#ff0000;
    }

    若是 :nth-of-type(4n+2) 就是选择下标是4的倍数加上2的所有元素

  • 相关阅读:
    A1023 Have Fun with Numbers (20分)(大整数四则运算)
    A1096 Consecutive Factors (20分)(质数分解)
    A1078 Hashing (25分)(哈希表、平方探测法)
    A1015 Reversible Primes (20分)(素数判断,进制转换)
    A1081 Rational Sum (20分)
    A1088 Rational Arithmetic (20分)
    A1049 Counting Ones (30分)
    A1008 Elevator (20分)
    A1059 Prime Factors (25分)
    A1155 Heap Paths (30分)
  • 原文地址:https://www.cnblogs.com/libin-1/p/6232610.html
Copyright © 2011-2022 走看看