CSS 伪类:使用来加强CSS选择器

作者 : 开心源码 本文共2559个字,预计阅读时间需要7分钟 发布时间: 2022-05-11 共80人阅读

我们对CSS的以下3种主要的选择器已经非常熟习:

  • 通使用标签:CSS代码中的 p 使用来选择HTML元素

  • 类(classes): CSS代码中的 .intro 使用来选择带有属性 class=”intro” 的HTML元素。

  • ids:CSS代码中的 #logo 使用来选择带有属性 id=”logo” 的HTML元素。

所有这些选择器都能附加用伪类(pseudo-classes)。一个伪类使用来:

  • 定义一个元素的特殊状态,这个状态往往和使用户的动态交互行为或者文档的动态结构化特征有关,因而不可以提前写入HTML文档中。

  • 是以冒号(colon) : 开始的一个关键词。

CSS 伪类:使用来加强CSS选择器

语法

伪类不可以单独存在。它必需附加在一个选择器上。伪类将只是定义那个选择器的特殊状态。语法看起来如下:

.selector:pseudo-class{ }

在选择器和伪类中间没有空格, between the selector and the pseudo-class, 以表示它们是连接在一起的。

:hover

一个常使用的伪类是 :hover,使用来给一个悬停状态(即可使用户鼠标悬停在元素上时触发的状态)下的目标元素增加样式。我们能把这个伪类使用于链接。由于悬停是最基本的链接交互动作。

a{ color: blue;}

a:hover{ color: red;}

第一行定义所有的 链接颜色为蓝色。第二行定义当被悬停时, 链接颜色为红色。第二行选择的是同样的HTML元素,但是有特定的行为发生。(本例中是发生了使用户悬停动作)。

:visited

这个伪类的目标对象是被访问过的链接。默认情况下,链接是蓝色的,当被您访问(点击或者触摸)过后,变成紫色。

例子如下:

CSS代码

a{ color: dodgerblue;}

a:visited{ color: rebeccapurple;}

HTML代码:

淘宝

百度

Mozilla

Techbrood

这个样式应使用通常被开发者忽视,不过它有助于帮助使用户浏览一系列的结果链接(比方百度搜索结果页),使用户能很方便的知道哪些链接我已经访问过,从而做出判断能否要再次访问以提高浏览效率。

:checked

:checked伪类是CSS3引入的一个很棒的状态选择器,使用来表示选择框(radio box、check box或者options)的选中状态。

有些读者可可以会有点疑问,我们在文档中也能放入初始状态(如Section 17.2.1 of HTML4里面定义的selected或者checked)。因而严格而言:checked伪类确实不完全是作使用于文档以外的信息,但其本质上是一个动态交互行为。

我们一样通过一个在线实例来学习:checked伪类的用,这是一个经典的纯CSS手风琴导航栏,毋庸任何js脚本:

和:checked相似的和UI界面组件状态有关的动态选择器还有:enabled和:disabled,较少用,这里不做更多详情。

上面都是和元素状态相关的伪类(Dynamic pseudo-classes),除此之外,我们经常用的还有结构化伪类(Structural pseudo-classes),如:first-child等。

:first-child 和 :last-child

这两个伪类和HTML元素层级关系有关。它们依据HTML元素在代码中出现的顺序来定位目标元素。我们能把元素顺序或者层级关系看成是一种特殊的状态。

  • One
  • Two
  • Three
  • Four

li:first-child{ background: greenyellow;}

li:last-child{ background: lightsalmon;}

能看到,我们并没有给第一个和最后一个

  • 元素增加 class 属性。 它们在文档中的位置定义了CSS规则的应使用。在这类例子中,我们能通过给这些元素增加特定的类(class)来实现同样的目的,这能帮助我们了解为什么上述通过元素状态或者顺序来选择元素的CSS规则被称为“伪类”。

    假如我们再增加一条列表项,用相同的CSS,样式会被自动调整:

    :nth-child

    这个伪类是 :first-child 和 :last-child的通使用版本,使用来选择第n个子元素。比方,假如你想选择第2个子元素,你能用 :nth-child(2):

    li:nth-child(2){ background: violet;}

    奇数和偶数(odd 和 even)

    除了用直接的数字外,:nth-child 还支持以奇偶数的方式来通配选择子元素,这对于设置少量动态表格样式有帮助。

    • :nth-child(odd) 目标对象为所有的奇数子元素。

    • :nth-child(even) 目标对象为所有的偶数子元素。

    li:nth-child(odd){ background: gold;}

    n遍历器(iterator)

    还有更为强大的选择规则,:nth-child 支持基于 n 遍历器关键词的选择计算方法。n 的取值从 0 开始。代表每n个元素进行遍历。比方假如我们想选择顺序为3的倍数的所有子元素,能用如下的规则:

    li:nth-child(3n){ background: hotpink;}

    上例中,选择了0(实际没有)、3、6的列表项。这个例子中0没有使用,但是我们将看到n从0开始是必要的。

    3n + 1

    上面这个规则能使用来选择目标元素为第一个以及随后每隔开3个位置的子元素。

    li:nth-child(3n+1){ background: limegreen;}

    3n+1 规则包含2个部分:

    • 3n 选择顺序为3的倍数的列表项。

    • +1 在前面选择的基础上向后偏移1个位置。

    能看到,n遍历器是非常灵活和强大的。

    否定选择器(:not)

    否定选择器和jQuery中的:not选择器相似,是一个带参数的函数式选择器,语法如下:

    *:not(FOO)

    它表示除了符合FOO选择条件的元素均被选中。比方我们想给列表项增加下边线,但最后一条不加(以免和列表容器的边线重复),此时即可以用:not来实现:

    li.item:not(:last-child) {border-bottom: 1px solid #dedede;}

    注意否定选择器不是结构化选择器,有些网上教程比方慕课网上的形容是错误的。另外否定选择器不可以嵌套用。

    其它伪类

    有很多可使用的伪类,能从这个链接查看完整列表:可使用伪类列表,有少量的用非常有限。最常使用的就是我们上面探讨过的这些。

  • 说明
    1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
    2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
    3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
    4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
    5. 如有链接无法下载、失效或广告,请联系管理员处理!
    6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
    7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
    开心源码网 » CSS 伪类:使用来加强CSS选择器

    发表回复