nth-of-type和nth-child

一、nth-of-type、nth-child

:nth-of-type(n) 选择器匹配属于父元素的特定类型的第 N 个子元素的每个元素。

:nth-child(n) 选择器匹配属于其父元素的第 N 个子元素,不论元素的类型。

二、区别

1.用于元素节点

E:nth-of-type(n) E元素的父元素的子元素中第n个E元素匹配(不一定是E元素的父元素的第n个子元素)

E:nth-child(n)  E元素的父元素的第n个子元素且是E元素才匹配

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no">
    <meta name="format-detection" content="telephone=no">
    <title></title>
    <style>
        p {
            color:blue;
        }
        p:nth-of-type(1){
            background-color:red;
        }
        h1:nth-of-type(1){
            background-color: yellow;
        }
        /*p:nth-child(1){*/
            /**/
        /*}*/
        /*h1:nth-child(1){*/
            /**/
        /*}*/
    </style>
</head>
<body>
<div>
    <h1 class="type">0</h1>
    <p class="type">1</p>
    <p class="type">2</p>
    <p class="type">3</p>
    <p class="type">4</p>
</div>
</body>
</html>

:nth-of-type                                                 :nth-child

 

说明:h1为父元素的第一个子元素,无论是nth-of-type还是nth-child都可以匹配;p为父元素的第二子元素,所以nth-child无法匹配,而子元素中第一个p元素nth-of-type可以匹配。

2.用于class节点

(1)若classA的父元素的子元素的classA用于同一类型的元素节点

classA:nth-of-type(n) classA的父元素的子元素中第n个classA匹配(不一定是classA的父元素的第n个子元素)

classA:nth-child(n) classA元素的父元素的第n个子元素且是classA元素才匹配

   <style>
        p {
            color:blue;
        }
        /*.type:nth-of-type(1){*/
            /**/
        /*}*/
        .type:nth-child(1){
            background-color:#f00;
        }
    </style>
<div>
    <h1>0</h1>
    <p class="type">1</p>
    <p class="type">2</p>
    <p class="type">3</p>
    <p class="type">4</p>
</div>

:nth-of-type                                                 :nth-child

 

(2)若classA的父元素的子元素的classA用于不同类型的元素节点

classA:nth-of-type(n) classA的父元素的子元素中,每种类型的元素节点中第n个classA匹配(不一定是classA的父元素的第n个子元素,也不一定是只有一个)

classA:nth-child(n) classA元素的父元素的第n个子元素且是classA元素才匹配

    <style>
        p {
            color:blue;
        }
        .type:nth-of-type(1){
            background-color:red;
        }
        /*.type:nth-child(1){*/
            /**/
        /*}*/
    </style>

<div>
    <h1 class="type">0</h1>
    <p class="type">1</p>
    <p class="type">2</p>
    <p class="type">3</p>
    <p class="type">4</p>
</div>

:nth-of-type                                                 :nth-child

 

说明:.type:nth-child(1)匹配的是type的父元素的子元素中第一个子元素且class是type的h1元素,.type:nth-of-type(1)匹配的是type的父元素的子元素中h1和p元素的第一个class是type的元素,即0和1。

总结:

classA:nth-of-type(n) 匹配的是父元素的子元素中,每种类型的元素节点中第n个class类型是classA的元素(不一定是classA的父元素的第n个子元素,也不一定是只有一个)

classA:nth-child(n) 匹配的是父元素的第n个子元素且class类型是classA

三、共同

1.Odd 和 even 是可用于匹配下标是奇数或偶数的子元素的关键词(第一个子元素的下标是 1)。

:nth-of-type

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no">
    <meta name="format-detection" content="telephone=no">
    <script src="http://m.baidu.com/static/search/3600/zepto.js"></script>
    <title></title>
    <style>
        p {
            color:white;
        }
        p:nth-of-type(odd){
            background-color:red;
        }
        p:nth-of-type(even){
            background-color:blue;
        }
    </style>
</head>
<body>
<div>
    <div>0</div>
    <p class="type">1</p>
    <p class="type">2</p>
    <p class="type">3</p>
    <p class="type">4</p>
</div>
</body>
</html>

:nth-child

p {
      color:white;
}p:nth-child(odd){
      background-color:red;
}
p:nth-child(even){
      background-color:blue;
}

:nth-of-type                                            :nth-child

   

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

:nth-of-type

p {
     color:blue;
}
p:nth-of-type(2n+0){
     background-color:red;
}

:nth-child

p {
     color:blue;
}
p:nth-child(2n+0){
     background-color:#f00;
}

:nth-of-type                                       :nth-child

  

说明:p:nth-of-type(2n+0)为p元素的父元素的子p元素中,第0、2、4个p元素匹配

p:nth-child(2n+0)为p元素的子元素中,第0、2、4个子元素且是p元素才匹配

时间: 2024-10-10 13:04:47

nth-of-type和nth-child的相关文章

c# 之 System.Type.GetType()与Object.GetType()与typeof比较

Object.GetType()与typeof的区别 //运算符,获得某一类型的 System.Type 对象. Type t = typeof(int); //方法,获取当前实例的类型. int i = 10; Console.WriteLine(i.GetType());//区别Typeof()是运算符而GetType是方法GetType()是基类System.Object的方法,因此只有建立一个实例之后才能被调用(也就是创建实例)Typeof()的参数只能是lint,string,类,且不

通过update-mapping更新child的field失败——NullPointerException

使用Elasticsearch时,需要用到parent-child API,建立parent的mapping后,动态更新child的field字段时,出现常见的NEP--NullPointerException.log日志异常如下: [2016-04-01 12:04:53,986][INFO ][rest.suppressed          ] /test/_mapping/name/ Params: {index=test, type=name} java.lang.NullPointe

jQuery源码

/*! * jQuery JavaScript Library v1.8.3 * http://jquery.com/ * * Includes Sizzle.js * http://sizzlejs.com/ * * Copyright 2012 jQuery Foundation and other contributors * Released under the MIT license * http://jquery.org/license * * Date: Tue Nov 13 20

jquery 2.1.0 源码

/*! * jQuery JavaScript Library v2.1.0 * http://jquery.com/ * * Includes Sizzle.js * http://sizzlejs.com/ * * Copyright 2005, 2014 jQuery Foundation, Inc. and other contributors * Released under the MIT license * http://jquery.org/license * * Date: 2

摘:数据结构各种算法实现(C++模板)

目  录 1.顺序表. 1 Seqlist.h 1 Test.cpp 6 2.单链表. 8 ListNode.h 8 SingleList.h 10 test.cpp 20 3.双向链表. 22 NodeList.h 22 DoubleList.h 24 Test.cpp 34 4.循环链表. 36 ListNode.h 36 CircularList.h 37 Test.cpp 47 5.顺序栈. 49 SeqStack.h 49 Test.cpp 54 6.链式栈. 55 StackNode

jQuery源码解析

( function( global, factory ) { "use strict"; if ( typeof module === "object" && typeof module.exports === "object" ) { module.exports = global.document ? factory( global, true ) : function( w ) { if ( !w.document ) {

一行代码轻松搞定各种IE兼容问题,IE6,IE7,IE8,IE9,IE10

在网站开发中不免因为各种兼容问题苦恼,针对兼容问题,其实IE给出了解决方案Google也给出了解决方案百度也应用了这种方案去解决IE的兼容问题? 百度源代码如下: 1 <!Doctype html> 2 <html xmlns=http://www.w3.org/1999/xhtml xmlns:bd=http://www.baidu.com/2010/xbdml> 3 <head> 4 <meta http-equiv=Content-Type content=

【jQuery源码】preFilter

1 preFilter: { 2 "ATTR": function( match ) { 3 //属性名解码 4 match[1] = match[1].replace( runescape, funescape ); 5 6 // Move the given value to match[3] whether quoted or unquoted 7 //属性解码 8 match[3] = ( match[3] || match[4] || match[5] || "&q

javascript脚本化文档

1.getElememtById /** * 获取指定id的的元素数组 */ function getElements(/*ids...*/) { var elements = {}; for(var i = 0; i < arguments.length; i++) { var id = arguments[i]; var elt = document.getElementById(id); if (elt == null) throw new Error("No element wit

Interrupt distribution scheme for a computer bus

A method of handling processor to processor interrupt requests in a multiprocessing computer bus environment is described. This method allows a multiple-tiered, increasing priority, interrupt request scheme. This method also allows processor to proce