Blogger Information
Blog 60
fans 0
comment 1
visits 37561
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
伪类nth-child用法 CSS 初值
威灵仙的博客
Original
892 people have browsed it

CSS3伪类选择器:nth-child()

               转载                                2012年02月29日 16:47:48            

标签:

css /

浏览器 /

class /

border /

safari /

div


 

网页制作Webjx文章简介:CSS3标准已提出数年,但是目前能实现她的浏览器并不多,虽然部分浏览器能实现部分规范,但这又有什么用呢?面对更多的兼容性问题,今天我们就来“前瞻”一下CSS3的一个伪类选择器“nth-child()”。    

CSS3的强大,让人惊叹,人们在惊喜之余,又不得不为其艰难的道路感到可惜:好的标准只有得到行业浏览器的良好支持才算得上“标准”。CSS3标准已提出数年,但是目前能实现她的浏览器并不多,虽然部分浏览器能实现部分规范,但这又有什么用呢?面对更多的兼容性问题,CSSer们只有望洋轻叹。虽然如此,但有前瞻性的我们,又怎能停步不前呢?今天我们就来“前瞻”一下CSS3的一个伪类选择器“:nth-child()”。

语法:

:nth-child(an+b)

为什么选择她,因为我认为,这个选择器是最多学问的一个了。很可惜,据我所测,目前能较好地支持她的只有Opera9+和Safari3+。

描述:

伪类:nth-child()的参数是an+b,如果按照w3.org上的描述,写成中文,很可能会让人头晕,再加上笔者的文笔水平有限,所以我决定避开an+b的说法,把它拆分成5种写法共5部分来说明。

第一种:简单数字序号写法

:nth-child(number)

直接匹配第number个元素。参数number必须为大于0的整数。

例子:

li:nth-child(3){background:orange;}/*把第3个LI的背景设为橙色*/

第二种:倍数写法

:nth-child(an)

匹配所有倍数为a的元素。其中参数an中的字母n不可缺省,它是倍数写法的标志,如3n、5n。

例子:

li:nth-child(3n){background:orange;}/*把第3、第6、第9、…、所有3的倍数的LI的背景设为橙色*/

第三种:倍数分组匹配

:nth-child(an+b) 与 :nth-child(an-b)

先对元素进行分组,每组有a个,b为组内成员的序号,其中字母n和加号+不可缺省,位置不可调换,这是该写法的标志,其中a,b均为正整数或0。如3n+1、5n+1。但加号可以变为负号,此时匹配组内的第a-b个。(其实an前面也可以是负号,但留给下一部分讲。)

例子:

li:nth-child(3n+1){background:orange;}/*匹配第1、第4、第7、…、每3个为一组的第1个LI*/

li:nth-child(3n+5){background:orange;}/*匹配第5、第8、第11、…、从第5个开始每3个为一组的第1个LI*/

li:nth-child(5n-1){background:orange;}/*匹配第5-1=4、第10-1=9、…、第5的倍数减1个LI*/

li:nth-child(3n±0){background:orange;}/*相当于(3n)*/

li:nth-child(±0n+3){background:orange;}/*相当于(3)*/

第四种:反向倍数分组匹配

:nth-child(-an+b)

此处一负一正,均不可缺省,否则无意义。这时与:nth-child(an+1)相似,都是匹配第1个,但不同的是它是倒着算的,从第b个开始往回算,所以它所匹配的最多也不会超过b个。

例子:

li:nth-child(-3n+8){background:orange;}/*匹配第8、第5和第2个LI*/

li:nth-child(-1n+8){background:orange;}/*或(-n+8),匹配前8个(包括第8个)LI,这个较为实用点,用来限定前面N个匹配常会用到*/

第五种:奇偶匹配

:nth-child(odd) 与 :nth-child(even)

分别匹配序号为奇数与偶数的元素。奇数(odd)与(2n+1)结果一样;偶数(even)与(2n+0)及(2n)结果一样。

附:例子效果图

 附(转):

我们在52CSS前面的文章中,陆续为大家讲了多种CSS选择器。今天说说九个CSS3结构性伪类选择器。

  一、X:nth-child(n)

   Example Source Code [www.52css.com]

  li:nth-child(3) {

  color: red;

  }

  接下来的几个伪类选择器使用上非常类似,功能也比较接近。

  :nth-child(n),用于匹配索引值为n的子元素。索引值从1开始。

  X:nth-child()用法实际上有三种变化,demo的用法是最简单的,X:nth-child()更强大的用处在于奇偶匹配,明河不展开讲,有兴趣的请看《Understanding :nth-child Pseudo-class Expressions》,《CSS3 :nth-child()伪类选择器》

  二、X:nth-last-child(n)

   Example Source Code [www.52css.com]

  li:nth-last-child(2) {

  color: red;

  }

  :nth-child(n),是从第一个开始算索引,而X:nth-last-child(n)是从最后一个开始算索引。

  三、X:nth-of-type(n)

   Example Source Code [www.52css.com]

  ul:nth-of-type(3) {

  border: 1px solid black;

  }

  nth-of-type与nth-child的效果是惊人的相似,想要更多的了解nth-of-type请看《Alternative for :nth-of-type() and :nth-child()》,:nth-of-type(N)

  四、X:nth-last-of-type(n)

   Example Source Code [www.52css.com]

  ul:nth-last-of-type(3) {

  border: 1px solid black;

  }

  :nth-last-child效果相似。

  五、X:first-child

   Example Source Code [www.52css.com]

  ul li:first-child {

  border-top: none;

  }

  匹配子集的第一个元素。IE7就可以支持了,这个伪类还是非常有用的。

  六、X:last-child

   Example Source Code [www.52css.com]

  ul > li:last-child {

  color: green;

  }

  与:first-child效果相反

  留意IE8支持:first-child,但不支持:last-child。

  七、X:only-child

   Example Source Code [www.52css.com]

  div p:only-child {

  color: red;

  }

  这个伪类一般用的比较少,比如上述代码匹配的是div下的有且仅有一个的p,也就是说,如果div内有多个p,将不匹配。

  八、X:only-of-type

   Example Source Code [www.52css.com]

  li:only-of-type {

  font-weight: bold;

  }

  与:only-child类似。

  九、X:first-of-type

   Example Source Code [www.52css.com]

  ul:first-of-type{

  font-weight: bold;

  }

  等价于:nth-of-type(1),匹配集合元素中的第一个元素。

posted @ 2011-07-22 23:36 yinwenle 阅读(68) 评论(0) 编辑

CSS初步

padding:top rigth bottom left 依次为padding的指定位置赋值

margin:top rigth bottom left 依次为margin的指定位置赋值

如果只写一个就是四个值相等

background-position:具体位置或者left top 左上角

font-style:italic 斜体 oblique也是斜体 nomal 正常

font-famaly:字体名字+字体名字(第一个字体系统没有就会自动设置为第二个)

font-weigth:bolder 字体粗细或者用具体数值100-900之间
line-heigth:行间距 行与行的垂直间距

font-variant:small-caps  例如 Abcd 之后的效果为ABCD A会更大一点

text-align:justify;两端对齐 这个在编辑文字时很常用

 text-decoration:line-through;删除线 underline 下划线 overline 上划线

text-transform:capitalize 首字母大写 uppercase 全部大写 lowercase 全部小写

a{color:red;}

a:hover{color:black;}

a:visited{color:blue}

css中的冲突问题

  1.如果定义了p{color:red} body p{color:blue} 这个是遵从后面的 因为选择更具体

  2.定义样式:p{color:red} p{color:blue} 这个是遵从后面的 如果把位置调换一下 总是遵从最后一个样式

  3.元素与类别(class):定义 p{color:red} p.one{color:blue} 有<div> <p class="one">yinwenle</p></div>

   这个是遵从有class的样式,class比标签的权重大

  4.class与id比较 :定义p#one{color:red} p.one{color:blue}<p id="one" class="one">yinwenle</p> 最后样式的颜色是red说明id的权重比class的大。

  5.id与style比较:定义p#one{color:red} <p id="one" style="color:blue">yinwenle</p> 最后的样式为style的蓝色说明style的权重最大。


Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post