CSS3选择器 :nth-child(n) 详解
CSS3 :nth-child(n):
http://demo.doyoe.com/css3/nth-child(n)/
浏览器参照基准:IE9, Firefox, Chrome, Safari, Opera
语法:
E:nth-child(n){ sRules } 【n从1开始】
* 匹配父元素索引为n的子元素E
【补充:】#parent :nth-child(1) 会匹配父元素#parent下的每一个第一个元素,如下橙色代码例子,#demo :nth-child(1)会匹配到的元素有:<h1>选取ul第一个子元素li</h1> 【section的第一个元素】,<li>如果我是红色,说明你的选择到了我,浏览器还颇为先进</li> 【ul 的第一个元素】,<input type='text' name='user' />【div的第一个元素】;在此基础上,#parent E:nth-child(1)会匹配 #parent下的每个第一个元素 中是E的那个元素.
:nth-child(n) 让你匹配到父元素的任一子元素:
- Figure 1: 常规用法 DEMO
<section id="demo"><h1>选取ul第一个子元素li</h1><ul><li>如果我是红色,说明你的选择到了我,浏览器还颇为先进</li><li>落后的浏览器</li><li>落后的浏览器</li><li>落后的浏览器</li>- </ul>
- <div>
- <input type='text' name='user' />
- </div>
#demo li:nth-child(1){ color:#f00; }
* 除lte IE8浏览器外,你都能看到第一个li被匹配到,且文本为红色;
重点:匹配到的是父元素的子元素:
- Figure 2: 如果代码是这样的 DEMO
<section id="demo"> <h1>选取#demo第一个子元素p</h1> <p>如果你以为我会被选中变红,那你就猜错了</p> <p>落后的浏览器</p> <p>落后的浏览器</p> <p>落后的浏览器... #demo p:nth-child(1){ color:#f00; }
* 上诉代码是不是让你感觉第一p元素会被匹配到?如果你真这么想,那你就真的错了,这里没有任何一个元素会被匹配到;
- Figure 3: CSS如果改成这样 DEMO
#demo p:nth-child(2){ color:#f00; }
* 将Figure #2中的CSS伪类 #demo p:nth-child(1) 改成 #demo p:nth-child(2) 你会发现第一个p才被选中变红,why? 不急,我们再往下看看;
- Figure 4: 再改 DEMO
#demo :nth-child(2){ color:#f00; }
* 我们再将Figure #3中的CSS伪类 #demo p:nth-child(2) 改成 #demo :nth-child(2) ,把p tag从选择器中去除,你会发现第一个p同样被选中变红。貌似这个才是能符合我们正常思维的,因为第1个p是#demo的第二个子元素;也就是说在本 DEMO 中 #demo p:nth-child(2) 与 #demo :nth-child(2) 是等价的;
* 你觉得这难理解么?CSS选择器是从右到左查询的,我猜你已经知道了这个。E:nth-child(n) 表示的是匹配父元素第2个子元素,如果第2个子元素正好是E,则被匹配到;
* 相信现在 Figure #2 为什么没有任何元素被选中,你已经可以理解了。因为#demo的第一个子元素并不是p,而是一个h1,所以这个选择器是无效的;
* 而 Figure #3 选择器 #demo p:nth-child(2) 表示匹配 #demo 的第2个子元素p,此时 #demo 的第2个子元素正好是一个p,所以被匹配到;
* 相对于 Figure #2 和 Figure #3,本例中的 #demo :nth-child(2) 表示直接选择 #demo 第2个子元素,不论这个子元素是任何标签,都将被匹配到;
:nth-child(n) 可能会这样被使用:
- Figure 5: 间隔背景色效果 DEMO
<section id="demo"> <h1>还记得这种间隔背景色的效果么?</h1> <ul> <li>CSS3伪类 :nth-child(n) 实现的奇偶间隔背景色效果</li> <li>CSS3伪类 :nth-child(n) 实现的奇偶间隔背景色效果</li> <li>CSS3伪类 :nth-child(n) 实现的奇偶间隔背景色效果</li> <li>CSS3伪类 :nth-child(n) 实现的奇偶间隔背景色效果</li> <li>CSS3伪类 :nth-child(n) 实现的奇偶间隔背景色效果... #demo li{ background-color:#ddd; } #demo li:nth-child(2n){ background-color:#bbb; }
* 确实,:nth-child(n), 这个 n 不仅可以试一个具体的数字索引,也可以作为一个乘法的因子,比如本例中的 2n 不论这个 n 是多少,始终代表是的一个偶数,所以实现奇偶间隔真是轻而易举;
- Figure 6: n+1使用场景 DEMO
<section id="demo"> <h1>我想每个显示4个方块,并且每列的背景色都不相同?</h1> <ul> <li>1</li><li>2</li><li>3</li><li>4</li> <li>5</li><li>6</li><li>7</li><li>8</li> <li>9</li><li>10</li><li>11</li><li>12</li> <li>13</li><li>14</li><li>15</li><li>16... #demo li{ float:left; } #demo li:nth-child(4n+1){ clear:left; background-color:#999; } #demo li:nth-child(4n+2){ background-color:#aaa; } #demo li:nth-child(4n+3){ background-color:#ccc; } #demo li:nth-child(4n+4){ background-color:#eee; }
* 有 Figure #5 这样一个 DEMO,如果也可以 n+1 这样子,你是不是会更兴奋?本例你可以看到 n+1 的使用场景,看看 DEMO 吧。相信你能拓展更多的使用场景和好玩的实例,Good Luck!
© Copyright Doyoe.com
CSS3选择器 :nth-child(n) 详解的更多相关文章
- CSS3盒模型display:box详解
display:box;box-flex是css3新添加的盒子模型属性,它的出现可以解决我们通过N多结构.css实现的布局方式.经典的一个布局应用就是布局的垂直等高.水平均分.按比例划分. 目前box ...
- css3中user-select的用法详解
css3中user-select的用法详解 user-select属性是css3新增的属性,用于设置用户是否能够选中文本.可用于除替换元素外的所有元素,以下是user-select的主要用法和注意事项 ...
- CSS3教程:pointer-events属性值详解 阻止穿透点击
转:http://www.poluoluo.com/jzxy/201109/142876.html 在某个项目中,很多元素需要定位在一个地图层上面,这里就要用到很多绝对定位或者相对定位的元素,但是这样 ...
- css3伸缩布局中justify-content详解
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- css3:border-radius圆角边框详解 (变圆 图片)
转:http://www.kuqin.com/shuoit/20141014/342620.html border-radius:50% 今天来聊聊这个border-radius属性,radius的英 ...
- CSS3图片翻转动画技术详解
CSS动画非常的有趣:这种技术的美就在于,通过使用很多简单的属性,你能创建出漂亮的消隐效果.其中代表性的一种就是CSS图片翻转效果,能让你看到一张卡片的正反两面上的内容.本文就是要用最简单的方法向大家 ...
- CSS3 nth-child的使用,详解css中nth的作用,以及nth-child的兼容写法
:nth-child是css3的一个比较常用的选择器.它用于匹配属于其父元素中的子元素,不论元素的类型. 它的参数可以是数字.关键词或公式.下面讲介绍它的使用方法, nth-child的使用 html ...
- CSS3之3D变换实例详解
CSS3的3D效果很赞,本文实现简单的两种3D翻转效果.首先看效果和源代码,文末是文绉绉的总结部分^_^ 以下CSS代码为了简洁没有添加前缀,请视情况自行添加(自动化时代推荐使用其他的一些方法,如gu ...
- CSS3中的Transition属性详解
w3c标准中对CSS3的transition这是样描述的:“CSS的transition允许CSS的属性值在一定的时间区间内平滑地过渡.这种效果可以在鼠标单击.获得焦点.被点击或对元素任何改变中触发, ...
- CSS3中的Transition属性详解(贝赛尔曲线)
transition语法: transition : [<'transition-property'> || <'transition-duration'> || <'t ...
随机推荐
- IIS、Asp.net 编译时的临时文件路径(转载)
IIS上部署的ASP.NET站点都会在一个.Net Framework的特定目录下生成临时编译文件增加ASP.NET站点的访问性能,有时候需要手动去删除这些临时编译文件,特别是发布新版本代码到IIS后 ...
- Eratosthenes筛选法求解质数
问题说明: 除了自身之外,无法被其它整数整除的数称之为质数,要求质数很简单,但如何快速的求出质数则一直是程式设计人员与数学家努力的课题, 在这边介绍一个着名的 Eratosthenes求质数方法. 解 ...
- shell 在文件名后面添加特定数据
for a in `ls mo-*`;do mv ${a%:} ${a%:}-1;done
- Mac Book 上安装Windows 8 / 10 以后安装 Hyper-v 无法正常使用问题---虚拟化已禁止问题
Mac book由于工作需要装了双启动,平时工作用 Windows 10, 由于有些老程序无法启动,还得再装一个虚拟机. 起初装 WMWare 开始装 7.1版本,结果没安装完就直接崩溃重启, 网上反 ...
- GPS模块的AT指令集
AT+CPIN? 查询sim卡状态. 接着: AT+CGCLASS="B"AT+CGDCONT=1,"IP","CMNET"AT+CGATT ...
- laravel页面间的传值
可以在前端页面元素上添加onclick事件 onclick='selectRaw(this)' js中写function selectRaw(obj){ var data=$(obj).attr(& ...
- Linux/Unix中的#!和!#
是不是在Terminal输入命令的时候,输入了很长的一个路径,然后发现还有在同一条命令中再输一次的时候很恼火,其实Shell是提供了trick的,就是使用!#(和#!不同哦) 习惯写脚本的猿,通常对于 ...
- 关于匿名类无法转换为object
缘由,不能在Razor中使用匿名类, 先事先封装了一个方法,用于Razor给cshtml模板返回页面. 在ashx一般处理程序中,是这样调用的 匿名类的格式如下:(只看格式,不看具体内容) 调用这样 ...
- [团队项目]SCRUM项目6.0 7.0 (新)
6.0----------------------------------------------------- sprint演示 1.坚持所有的sprint都结束于演示. 团队的成果得到认可,会感觉 ...
- YTU 2990: 链表的基本运算(线性表)
2990: 链表的基本运算(线性表) 时间限制: 1 Sec 内存限制: 128 MB 提交: 1 解决: 1 题目描述 编写一个程序,实现链表的各种基本运算(假设顺序表的元素类型为char),主 ...