CSS:好玩的‘伪类’系列之——(:nth-of-type()、:first-of-type和:last-of-type)

:nth-of-type()

定义:在拥有同一父元素的情况下(前提),匹配一组相同的兄弟元素,修改其样式

触发条件:( )中为数字值,从1开始(注意,不是下标,木有0),也可以是2n或者2n+1。2n代表匹配所有相同的偶数元素,2n+1代表匹配所有相同的奇数元素;也可以使用关键字odd(代表奇数)和even(代表偶数),修改指定的元素样式

兼容:IE8及8以下不支持 Opera9.5以下不支持

:first-of-type

定义:在拥有同一父元素的情况下(前提),匹配一组兄弟元素中其类型的第一个元素,修改其样式

触发条件:在拥有同一父元素的情况下(前提),匹配在一组相同兄弟元素中的第一个元素,相当于 A B:nth-of-type(1),其中A代表父元素,B代表A中相同的元素,修改其样式

兼容:IE8及8以下不支持 Opera9.5以下不支持

:last-of-type

定义:在拥有同一父元素的情况下(前提),匹配在一组相同兄弟元素中最后一个给定类型的元素,修改其样式

触发条件:在拥有同一父元素的情况下(前提),匹配在一组相同兄弟元素中的最后一个元素,修改其样式

兼容:IE8及8以下不支持 Opera9.5以下不支持

举个栗子

html代码:

  <ul>
    <li>我是ul中的第一个li</li>
    <li>我是ul中的第二个li</li>
    <li>我是ul中的第三个li</li>
    <li>我是ul中的第四个li</li>
  </ul>

  <ol>
    <li>我是ol中的第一个li</li>
    <li>我是ol中的第二个li</li>
    <li class='special-li'>
      我有子元素
      <ol>
        <li>我是子元素ol中的第一个li</li>
        <li>我是子元素ol中的第二个li</li>
        <li>我是子元素ol中的第三个li</li>
      </ol>
    </li>
    <li>我是ol中的第四个li</li>
  </ol>

css代码:

ul,ol{
  width: 100%;
  margin-bottom: 20px;
  font-size: 14px;
}
li{
  cursor: pointer;
  width: 100%;
  text-align: left;
  text-indent: 12px;
  line-height: 30px;
  color: #3300CC;
}
.special-li{
  padding-left:15px ;
}
ul li:nth-of-type(2n+1){/* 奇数列 */
  color: #993399;
}
ul li:last-of-type{/* ul下的最后一个li */
  background-color: #66FF33;
}
ol li:nth-of-type(2n){/* 偶数列 */
  color: #993399;
}
ol li:first-of-type:hover{/* ol下的第一个li,悬停效果 */
  color: #CC3300;
  font-weight: 900;
}
ol li:last-of-type:hover{/* ol下的最后一个li,悬停效果 */
  color: #CC3300;
  font-weight: 900;
}

效果图:

CSS:好玩的‘伪类’系列之——(:nth-of-type()、:first-of-type和:last-of-type)