CSS3:nth-child()选择器

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

<!DOCTYPE html>
<html><head><style>/* 选择的是p元素的父元素下的第二个子元素(无论类型)的每个p的背景色为red */p:nth-child(2) {background: red;}</style>
</head><body><h1>这是标题</h1><p>第一个段落。</p><p>第二个段落。</p><p>第三个段落。</p><p>第四个段落。</p><p><b>注释:</b>Internet Explorer 不支持 :nth-child() 选择器。</p></body></html>

实例1

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

在这里,我们为奇数和偶数 p 元素指定两种不同的背景色:

<!DOCTYPE html>
<html><head><style>/* 选择的是p元素其父元素下所有的基数元素(无论类型)下p的样式 */p:nth-child(odd) {background: #ff0000;}/* 选择的是p元素其父元素下所有的偶数元素(无论类型)下p的样式 */p:nth-child(even) {background: #0000ff;}</style>
</head><body><h1>这是标题</h1><p>第一个段落。</p><p>第二个段落。</p><p>第三个段落。</p><p>第四个段落。</p><p><b>注释:</b>Internet Explorer 不支持 :nth-child() 选择器。</p></body></html>

实例2

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

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

<!DOCTYPE html>
<html><head><style>/* 选择的是p元素其父元素下所有子元素小标为3倍的p元素:0、3、6 */p:nth-child(3n+0) {background: #ff0000;}</style>
</head><body><h1>这是标题</h1><p>第一个段落。</p><p>第二个段落。</p><p>第三个段落。</p><p>第四个段落。</p><p>第五个段落。</p><p>第六个段落。</p><p>第七个段落。</p><p>第八个段落。</p><p>第九个段落。</p><p><b>注释:</b>Internet Explorer 不支持 :nth-child() 选择器。</p></body></html>

CSS3:nth-of-type()选择器

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

n 可以是数字、关键词或公式。

<!DOCTYPE html>
<html><head><style>/* 选择的是p元素的父元素下的第二个子元素(必须为p元素)的每个p的背景色为red */p:nth-of-type(2) {background: red;}</style>
</head><body><h1>这是标题</h1><p>第一个段落。</p><p>第二个段落。</p><p>第三个段落。</p><p>第四个段落。</p><p><b>注释:</b>Internet Explorer 不支持 :nth-child() 选择器。</p></body></html>

实例1

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

在这里,我们为奇数和偶数 p 元素指定两种不同的背景色:

<!DOCTYPE html>
<html><head><style>p:nth-of-type(odd) {background: #ff0000;}p:nth-of-type(even) {background: #0000ff;}</style>
</head><body><h1>这是标题</h1><p>第一个段落。</p><p>第二个段落。</p><p>第三个段落。</p><p>第四个段落。</p><p>第五个段落。</p></body></html>

实例2

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

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

<!DOCTYPE html>
<html><head><style>p:nth-of-type(3n+0) {background: #ff0000;}</style>
</head><body><h1>这是标题</h1><p>第一个段落。</p><p>第二个段落。</p><p>第三个段落。</p><p>第四个段落。</p><p>第五个段落。</p><p>第六个段落。</p><p>第七个段落。</p><p>第八个段落。</p><p>第九个段落。</p></body></html>

使用 nth-of-type选择类名下的坑

如果是 .class:nth-of-type(n)所选出的html元素必须同时符合以下条件:

  • 类属性中包含 class
  • 包含该属性的元素必须是其父元素下子元素的第n个
<!DOCTYPE html>
<html><head><style>html {font-size: 16px;}.ems:nth-last-of-type(1) li {font-size: 1.3em;}.rems li {font-size: 1.3rem;}</style>
</head><body><ul class="ems"><li>One</li><li>Two</li><li>Three<ul><li>Three A</li><li>Three B<ul><li>Three B 2</li></ul></li></ul></li></ul><ul class="ems"><li>One</li><li>Two</li><li>Three<ul><li>Three A</li><li>Three B<ul><li>Three B 2</li></ul></li></ul></li></ul></div><ul class="rems"><li>One</li><li>Two</li><li>Three<ul><li>Three A</li><li>Three B<ul><li>Three B 2</li></ul></li></ul></li></ul></body></html>

效果图:

原因:.ems:nth-last-of-type(1)选择的是含有 ems类名的元素ul,但由于该ul并不是同级别下ul的最后一个(含有rems类名的ul才是最后一个)。所以这句话并不对第二个ul生效。

对此,我们有两种解决方式:

方式一、使含有ems类名的标签作为同级别元素下的最后一个(推荐)

可对于两个含有ems的ul元素使用div进行包裹

<!DOCTYPE html>
<html><head><style>html {font-size: 16px;}.ems:nth-last-of-type(1) li {font-size: 1.3em;}.rems li {font-size: 1.3rem;}</style>
</head><body><!-- 在此添加div,使得这两个含有ems类名的ul元素包括在该div下 --><div><ul class="ems"><li>One</li><li>Two</li><li>Three<ul><li>Three A</li><li>Three B<ul><li>Three B 2</li></ul></li></ul></li></ul><!-- 因而该ul则可作为同级别下ul元素的最后一个 --><ul class="ems"><li>One</li><li>Two</li><li>Three<ul><li>Three A</li><li>Three B<ul><li>Three B 2</li></ul></li></ul></li></ul></div><ul class="rems"><li>One</li><li>Two</li><li>Three<ul><li>Three A</li><li>Three B<ul><li>Three B 2</li></ul></li></ul></li></ul></body></html>

效果图:

方式二、设置其真实的n值(不推荐)

对于该场景下,只需要把 .ems:nth-last-of-type(1) 改为 ems:nth-last-of-type(2)即可,因为含有ems类名的第二个ul标签其实是作为同级同类型标签下的倒数第二个

<!DOCTYPE html>
<html><head><style>html {font-size: 16px;}.ems:nth-last-of-type(2) li {font-size: 1.3em;}.rems li {font-size: 1.3rem;}</style>
</head><body><ul class="ems"><li>One</li><li>Two</li><li>Three<ul><li>Three A</li><li>Three B<ul><li>Three B 2</li></ul></li></ul></li></ul><ul class="ems"><li>One</li><li>Two</li><li>Three<ul><li>Three A</li><li>Three B<ul><li>Three B 2</li></ul></li></ul></li></ul><ul class="rems"><li>One</li><li>Two</li><li>Three<ul><li>Three A</li><li>Three B<ul><li>Three B 2</li></ul></li></ul></li></ul></body></html>

效果图:

参考:https://blog.csdn.net/tinyleaf/article/details/81627782

JS——nth-child和nth-of-type的区别以及nth-of-type下的坑相关推荐

  1. nth:child()选择器

    nth:child()属于CSS3中的选择器,针对于有多个相同标签时可以对每个标签的样式进行单独设置,以微信小程序开发中所写的代码为例: 这是wxml中的代码(类似于html): 这是wxss中的代码 ...

  2. Node.js: fs.readFile/writeFile 和 fs.createReadStream/writeStream 区别

    1. 先说说各自的用法: How do I read files in node.js? fs = require('fs'); fs.readFile(file, [encoding], [call ...

  3. ajax请求type种类,ajax配置项中的type与method

    1. jQuery中ajax配置项中的使用type与method的区别 本质上两个配置项是没有区别的,区别在于两者出现的时间不同,type对于目前jQuery的版本全部兼容,也就是说 $.ajax({ ...

  4. 三分钟了解interface和type的区别

    对typescript 有一定了解的,会发现 interface 和 type 很相似,类型定义上,很多时候,用两种方式都能实现. 三分钟直入主题, 除了语法不同外,interface和type主要有 ...

  5. JS放在head和放在body中的区别

    JS放在head和放在body中的区别 在HTML body部分中的JavaScripts会在页面加载的时候被执行. 在HTML head部分中的JavaScripts会在被调用的时候才执行.一.区别 ...

  6. editable type支持function实现不同行type分别为select、text

    bootstrap table一般注重一列中所有行都是一个处理方式,很少对应有同一列不同行要处理成不同的形式.但是formate啊,index啊,这些倒是随着行变化. 那么结合x-editable呢, ...

  7. js中的typeof 与typescript typeof的区别

    js中的typeof 与typescript typeof的区别 在 JavaScript 中,typeof 是一个运算符,用于返回一个值的数据类型.它可以返回下列字符串中的一个: "und ...

  8. Format specifies type 'id' but the argument has type 'NSError *__autoreleasing *

    我想打印error,但是出现了标题中的错误,代码如下: -(id)yobee_responseObjectForResponse:(NSURLResponse *)response data:(NSD ...

  9. R语言使用plot函数和lines函数可视化线图(line plot)时、图之间的主要区别是由选项type产生的、type参数常用参数说明、不同type生成的可视化图像对比

    R语言使用plot函数和lines函数可视化线图(line plot)时.图之间的主要区别是由选项type产生的.type参数常用参数说明.不同type生成的可视化图像对比 目录

  10. TypeError: Input 'b' of 'MatMul' Op has type float32 that does not match type int32 of argument 'a'.

    执行如下语句报错 TypeError: Input 'b' of 'MatMul' Op has type float32 that does not match type int32 of argu ...

最新文章

  1. 免费使用《Autorun病毒防御者》
  2. 吴恩达《机器学习》课程总结(15)异常检测
  3. keil写文字怎么会乱码_朋友圈发婚纱照配文字怎么写?
  4. 你真正的去了解过Linux吗?不单单是一些命令操作,比如它的系统架构!!!
  5. [转]简单介绍如何用Reporting Service制作报表
  6. C和指针之数组编程练习8(8皇后问题)
  7. php商品报损流程,库存报损
  8. android笔记集one
  9. java根据word模板导出_Java通过word模板导出word
  10. spss标准差与标准偏差不一样
  11. 谷歌搜索引擎总是被修改
  12. PHP中常用的十个字符串函数
  13. 多宽带叠加的分布式云盘:文件秒传、断点续传、大文件下载
  14. 【深度学习】04-01-自注意力机制(Self-attention)-李宏毅老师2122深度学习课程笔记
  15. 物联网外设学习笔记-摄像头(一)
  16. 大众点评Cat--架构分析
  17. 移动端多页面APP(MPA)开发体验
  18. 4.Tableau的数据预处理
  19. 编程之美-1.3-烙饼排序问题
  20. 便携式CAN分析仪的使用

热门文章

  1. 【001】Cortex-R5体系结构概述
  2. 带上紧箍咒,特斯拉辅助驾驶系统即将更新
  3. 根据手机指南针经纬度在地图上找到其位置
  4. mongoDB数据库的安装与配置
  5. react 实现问卷调查(单选题目、多选题目)
  6. 疫情对广州房价的影响
  7. 基础-使用视图(CREATE VIEW....AS....)
  8. matlab行距,Matlab cdfplot:如何控制标记间距的间距
  9. 51信用卡清退P2P业务,大量资金逾期!投资人或难保本金
  10. 【日常分享】多邻国v4.93.4,在线学习英语、日语、韩语、德语…等30多种语言