JS——nth-child和nth-of-type的区别以及nth-of-type下的坑
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下的坑相关推荐
- nth:child()选择器
nth:child()属于CSS3中的选择器,针对于有多个相同标签时可以对每个标签的样式进行单独设置,以微信小程序开发中所写的代码为例: 这是wxml中的代码(类似于html): 这是wxss中的代码 ...
- 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 ...
- ajax请求type种类,ajax配置项中的type与method
1. jQuery中ajax配置项中的使用type与method的区别 本质上两个配置项是没有区别的,区别在于两者出现的时间不同,type对于目前jQuery的版本全部兼容,也就是说 $.ajax({ ...
- 三分钟了解interface和type的区别
对typescript 有一定了解的,会发现 interface 和 type 很相似,类型定义上,很多时候,用两种方式都能实现. 三分钟直入主题, 除了语法不同外,interface和type主要有 ...
- JS放在head和放在body中的区别
JS放在head和放在body中的区别 在HTML body部分中的JavaScripts会在页面加载的时候被执行. 在HTML head部分中的JavaScripts会在被调用的时候才执行.一.区别 ...
- editable type支持function实现不同行type分别为select、text
bootstrap table一般注重一列中所有行都是一个处理方式,很少对应有同一列不同行要处理成不同的形式.但是formate啊,index啊,这些倒是随着行变化. 那么结合x-editable呢, ...
- js中的typeof 与typescript typeof的区别
js中的typeof 与typescript typeof的区别 在 JavaScript 中,typeof 是一个运算符,用于返回一个值的数据类型.它可以返回下列字符串中的一个: "und ...
- Format specifies type 'id' but the argument has type 'NSError *__autoreleasing *
我想打印error,但是出现了标题中的错误,代码如下: -(id)yobee_responseObjectForResponse:(NSURLResponse *)response data:(NSD ...
- R语言使用plot函数和lines函数可视化线图(line plot)时、图之间的主要区别是由选项type产生的、type参数常用参数说明、不同type生成的可视化图像对比
R语言使用plot函数和lines函数可视化线图(line plot)时.图之间的主要区别是由选项type产生的.type参数常用参数说明.不同type生成的可视化图像对比 目录
- 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 ...
最新文章
- 免费使用《Autorun病毒防御者》
- 吴恩达《机器学习》课程总结(15)异常检测
- keil写文字怎么会乱码_朋友圈发婚纱照配文字怎么写?
- 你真正的去了解过Linux吗?不单单是一些命令操作,比如它的系统架构!!!
- [转]简单介绍如何用Reporting Service制作报表
- C和指针之数组编程练习8(8皇后问题)
- php商品报损流程,库存报损
- android笔记集one
- java根据word模板导出_Java通过word模板导出word
- spss标准差与标准偏差不一样
- 谷歌搜索引擎总是被修改
- PHP中常用的十个字符串函数
- 多宽带叠加的分布式云盘:文件秒传、断点续传、大文件下载
- 【深度学习】04-01-自注意力机制(Self-attention)-李宏毅老师2122深度学习课程笔记
- 物联网外设学习笔记-摄像头(一)
- 大众点评Cat--架构分析
- 移动端多页面APP(MPA)开发体验
- 4.Tableau的数据预处理
- 编程之美-1.3-烙饼排序问题
- 便携式CAN分析仪的使用
热门文章
- 【001】Cortex-R5体系结构概述
- 带上紧箍咒,特斯拉辅助驾驶系统即将更新
- 根据手机指南针经纬度在地图上找到其位置
- mongoDB数据库的安装与配置
- react 实现问卷调查(单选题目、多选题目)
- 疫情对广州房价的影响
- 基础-使用视图(CREATE VIEW....AS....)
- matlab行距,Matlab cdfplot:如何控制标记间距的间距
- 51信用卡清退P2P业务,大量资金逾期!投资人或难保本金
- 【日常分享】多邻国v4.93.4,在线学习英语、日语、韩语、德语…等30多种语言