结构伪类选择器E F:nth-child(n)和E F:nth-of-type(n)的区分

使用E F:nth-child(n)和E F:nth-of-type(n)的 关键点

我们先来看看这两种选择器的解释
  1. E F:nth-child(n):选择父级元素E的第n个子元素是F的,(n可以使1、2、3),关键字为even、odd
  2. E F:nth-of-type(n):选择父元素内具有只等类型的第n个F子元素
我的理解

这两种选择器最简单的区别方式正如代码中的,一个是child主导,一个是type主导

  1. E F:nth-child(n)是不管三七二十一直接找到父级元素的第n个不管你是<p>标签<div>标签还是其他任意标签。选择器会先选择你然后再进行对比,看第n个元素是不是F,是F则确认选择,不是则放弃选择
  2. E F:nth-of-type(n)则是先找到type,也就是父元素下面的所有F元素,再把其中的第n个确认选择。
  3. 在我看来E F:nth-of-type(n)目的性更强,也更易使用, E F:nth-of-type(n)直接可以直观的确认自己想要确认的是哪一种的哪一个元素。
<!DOCTYPE html>
<html>
<head lang="en">
   <meta charset="UTF-8">
   <title>使用CSS3结构伪类选择器</title>
   <style>
   	* {
   		border:  1px solid red;
   	}

   	/*选择到父级里的第一子元素是p的*/
   	p:nth-child(1){
   		background: yellow;
   	}

   	/*父元素里第2个类型为p的元素*/
   	p:nth-of-type(2){
   		background: blue;
   	}
   </style>
</head>
<body>
   <h2>结构伪类选择器</h2>
   <p>p1</p>
   <p>p2</p>
   <p>p3</p>
   <ul>
   	<li>
   		<p>1</p>
   		<p>2</p>
   		<p>3</p>
   	</li>
   </ul>
</body>
</html>

下面是运行结果
可以看到p2和2都被p:nth-of-type(2)选择变蓝
1的背景变黄但是p1没有,因为p:nth-child(1)在选择的时候p1的<p>标签之前还有一个<h2>标签,所以没有被选择。
在这里插入图片描述

### 回答1: e:nth-child和e:nth-of-type都是CSS选择器中的伪类,用于选择某个元素的特定位置。 e:nth-child(n)选择e元素的第n个子元素,无论它是什么类型。 e:nth-of-type(n)选择e元素的第n个同类型兄弟元素,即与e元素同类型的元素中的第n个。 例如,对于以下HTML代码: ``` <ul> <li>第一个</li> <li>第二个</li> <li>第三个</li> <li>第四个</li> <li>第五个</li> </ul> ``` 如果想选择第二个li元素,可以使用以下CSS选择器: ``` li:nth-child(2) { color: red; } ``` 或者: ``` li:nth-of-type(2) { color: red; } ``` 两者的效果是一样的。 ### 回答2: e:nth-child和e:nth-of-type都是CSS选择器中常见的伪类选择器。它们都可以通过指定一个特定的元素位置来选取该位置上的元素。 e:nth-child可以用来选取父元素下所有子元素中的第n个子元素,不论该子元素的标签名是什么。例如,ul:nth-child(3)表示选取第三个ul元素。 而e:nth-of-type则可以用来选取父元素下特定标签的第n个子元素。例如,ul:nth-of-type(3)表示选取父元素下第三个ul标签的子元素。 区别在于,e:nth-child是选择当前元素的父元素下所有子元素中的第n个元素,而e:nth-of-type是用来选择指定标签名的父元素下第n个该标签名的元素。 举个例子,如果页面上有两个ul标签,如下: ``` <div> <ul> <li>第一个ul的第一个li</li> <li>第一个ul的第二个li</li> </ul> <ol> <li>第二个ul的第一个li</li> <li>第二个ul的第二个li</li> </ol> <ul> <li>第三个ul的第一个li</li> <li>第三个ul的第二个li</li> </ul> </div> ``` 如果我们想选择第一个ul标签下第二个li元素,可以使用ul:nth-child(1) li:nth-child(2);如果我们想选择第一个ul标签下第二个li元素,则可以使用ul:nth-of-type(1) li:nth-of-type(2)。 综上所述,e:nth-child和e:nth-of-type都是很有用的选择器,只需注意它们的区别即可。 ### 回答3: e:nth-child和e:nth-of-typeCSS中两个非常常用的伪类选择器。它们的作用是选择一个父元素下符合特定规则的子元素,并对其进行样式操作。 首先,e:nth-child的意思是选择父元素下所有子元素中的第n个元素,无论元素类型是什么。例如: ``` ul li:nth-child(3) { color: red; } ``` 这段代码将会选择ul元素下的第三个li元素,并将其颜色设置为红色。 e:nth-of-type的意思是选择父元素下所有具有特定类型(例如p、div、h1等)且是该类型下的第n个元素。例如: ``` div p:nth-of-type(2) { font-size: 20px; } ``` 这段代码将会选择div元素下的所有p元素中的第二个,并将其字号设置为20像素。 需要注意的是,e:nth-child中n是指整个子元素列表中的第n个元素,而e:nth-of-type中n是指该元素类型的第n个元素。因此,两者的选中元素可能会有所不同。 另外,需要注意的是e:nth-child和e:nth-of-type是从1开始计数的,而不是从0开始。如果指定的元素不存在,那么这个选择器将不会对任何元素产生影响。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值