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站点中Adomd.net集成认证账号问题
最近在做一个Asp.net项目的时候 ,在C#代码里面用到了Adomd.net去连接SSAS服务器做MDX查询,开发完成后将Asp.net代码部署到IIS后发现Adomd.net老是连接不到SSAS服 ...
- oracle中的函数
ORACLE中函数 Oracle已经内建了许多函数,不同的函数有不同的作用和用法,有的函数只能作用在一个记录行上,有的能够作用在多个记录行上,不同的函数可能处理不同的数据类型.常见的 ...
- OpenStack 之vmware机器迁移到openstack集群
原理 openstack本身是支持使用vmware格式的镜像的,但是是需要我们我们在/etc/nova/nova.conf的配置文件中指定该计算节点使用vmware的驱动 1 2 3 4 5 6 7 ...
- 关于IE6/7的 inline-block
今天在写代码的时候使用了inline-block,但是很意外的在IE6/7下此属性不给力~~ 但是由于我既需要他是个内联数据,又要设置它的宽度设置block,所以只能使用inline-block. 所 ...
- std的find和reverse_iterator联合使用
上代码: // test2013.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <stdlib.h> #in ...
- php curl向远程服务器上传文件
<?php /** * test.php: */ header('content-type:text/html;charset=utf8'); $ch = curl_init(); //加@符号 ...
- WPF:窗体置顶
1.设置窗体TopMost属性 private DispatcherTimer timer; public Window1() { InitializeComponent(); Loaded += n ...
- 用C#.NET编写软件注册机
验证注册码是保护软件产品产权的常用手段.一般过程如下, 1. 软件发行者收集用户特有的信息: 2. 根据用户特有的信息,使用注册机生成注册码并把注册码发给客户: 3. 向软件导入注册码,由软件自 ...
- css样式(二)(伪类 | 伪元素 | 导航 | 图像拼合 | 属性选择器 )
一.rgb值: RGBA 颜色 RGBA 颜色值得到以下浏览器的支持:IE9+.Firefox +.Chrome.Safari 以及 Opera +. RGBA 颜色值是 RGB 颜色值的扩展,带有一 ...
- java JPEGImageEncoder;图像处理
在Eclipse中处理图片,需要引入两个包: import com.sun.image.codec.jpeg.JPEGCodec; import com.sun.image.codec.jpeg.JP ...