你的浏览器不支持canvas

Enjoy life!

css - 选择器 - 3 - 伪类选择器 - 下篇

Date: Author: JM

本文章采用 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议 进行许可。

  • 以下内容源于:《图解CSS3核心技术与案例实战》 第2章

一、结构伪类选择器

1.1 语法

selector

1.2 浏览器兼容性

selector

1.3 结构伪类选择器中的 n

selector

  • 补充:
    • n 为整数,并且只能从1开始。
    • n 可以是 odd (奇数:1、3、5、7、9);或者是 even (偶数:2、4、6、8、10)

1.4 :first-child 和 :first-of-type

  • :first-child:定位某个元素的第一个子元素。
  • 点击打开demo,效果图如下

selector


  • 考虑使用 :first-child 的场景:
    • 上述效果其实可以通过 添加类名 去解决,但是,如果多处都有这样的效果,那岂不是要为每个元素都添加这个类名?这样的话,这个代码看上去就会很冗杂。所以,此时可以考虑使用:first-child
    • 如果使用:first-child 来移除一个浮动元素的左边距或右边距,如果浏览器不支持:first-child,布局将会被破坏。

  • :first-of-type:指定了元素的类型

1.5 :last-child 和 :last-of-type

  • :last-child:定位某个元素的最后一个子元素。
  • 点击打开demo,效果图如下

selector


  • :last-of-type:指定了元素的类型

1.6 :nth-child()

  • :nth-child(n):定位某个父元素的一个或多个特定的子元素。
  • 点击打开demo,效果图如下

selector

1.7 :nth-last-child()

  • :nth-last-child(n):定位某个父元素的一个或多个特定的子元素,不过是从父元素的最后一个子元素开始计算。
  • 点击打开demo,效果图如下

selector

  • 补充::nth-child():nth-last-child() 比较

selector

1.8 :nth-of-type() 和 :nth-last-of-type()

  • :nth-of-type(n):定位某个父元素的一个或多个特定的子元素,不过它只是计算父元素中指定的某种类型的子元素。
  • 接下来看一看 :nth-child(n):nth-of-type(n) 的区别,效果图如下:【点击打开demo

selector

  • 我们都知道,<ul> 元素的子元素只能是 <li> 元素而不能是其他元素。但是例子中又在 <ul> 元素中添加了 <div> 元素。
  • 从图中我们可以看到:
    • .child > li:nth-child(4) 并没有效果,那是因为将 <div> 元素作为了 <ul> 元素的第 4 个子元素,而第 4 个 <li> 元素则成为了 <ul> 元素的第5个子元素。【.child > li:nth-child(5) 这样才能正确匹配第4个<li>元素】
    • .type > li:nth-of-type(4) 却能正确匹配第4个<li>元素。

  • 总结:
    • :nth-child(n):选择的是某父元素的子元素,不过这个元素并没有指出确定的类型!!
      • 我们可以这样理解.child > li:nth-child(4):选择第4个<li>元素,但由于没有指定类型,刚好 .child 的第 4 个元素是<div> ,这也相当于.child > li:nth-child(4)这个元素是不存在的,所以匹配失效。
    • nth-of-type(n):选择的是某父元素的子元素,不过这个子元素是指定类型。
    • 我们可以这样理解.type > li:nth-of-type(4):选择的元素类型是 <li>,并且是第4个。

  • :nth-last-of-type()nth-of-type 一样,不过起始方向是从最后一个子元素开始。

1.9 :only-child

  • :only-child:匹配元素的父元素中仅有一个子元素。【即:仅能匹配父元素中的一个子元素,这个子元素是唯一的】
  • 点击打开demo

selector

1.10 :only-of-type

  • :only-of-type:选择一个元素是它的父元素的唯一一个相同类型的子元素。【表示一个元素有很多个子元素,而其中只有一个子元素是唯一的,使用:only-of-type 就可以选中这个唯一类型子元素。】
  • 点击打开demo

selector


  • :only-child:only-of-type 的区别可以参照 1.8 .

1.11 :empty

selector

二、、否定伪类选择器

2.1 语法

selector

2.2 浏览器兼容性

selector

2.3 demo

selector


对于本文内容有问题或建议的小伙伴,欢迎在文章底部留言交流讨论。