CSS 伪类与伪元素辨析

什么是伪类

伪类是一种选择器,选择处于特定状态的元素。比如当它们是某一类型的第一个元素时,或者当鼠标指针悬浮在元素上时。类似表现为向文档中的某个部分应用了一个类,通常有助于减少 HTML 中多余的类,使得代码更灵活、更易于维护。

语法:

pseudo-class-name

例如:选中 <article> 元素中的第一个 <p>元素

<!DOCTYPE html>
<html lang="zh-CN">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>选中 article 元素中的第一个 p 元素</title>
    <style>
      article p:first-child {
        font-size: 120%;
        font-weight: bold;
      }
    </style>
  </head>
  <body>
    <article>
      <p>
        Veggies es bonus vobis, proinde vos postulo essum magis kohlrabi welsh
        onion daikon amaranth tatsoi tomatillo melon azuki bean garlic.
      </p>

      <p>
        Gumbo beet greens corn soko endive gumbo gourd. Parsley shallot
        courgette tatsoi pea sprouts fava bean collard greens dandelion okra
        wakame tomato. Dandelion cucumber earthnut pea peanut soko zucchini.
      </p>
    </article>
  </body>
</html>

伪类示例代码结果

结构伪类

类似上文提到的 :first-child,根据DOM节点在DOM树的位置选择元素的选择器,可称之为结构伪类。例如:

  • :first 匹配分页媒体的第一页。
  • :first-child 匹配兄弟元素中的第一个元素。
  • :first-of-type 匹配兄弟元素中第一个某种类型的元素。

用户行为伪类

用户行为伪类亦可称之为动态伪类状态伪类。这些伪类只会在用户以某种方式和文档交互时应用,表现为用户在和元素交互时,在元素上添加了一个类。例如:

  • :hover 只会在用户将鼠标指针移动到元素上时,才会被激活。
  • :focus 只会在用户使用键盘控制,选定元素的时候被激活。

更多伪类请见MDN-味蕾和伪元素-参考节

什么是伪元素

伪元素类似表现为向 HTML 中添加了全新的元素,而不是向现有元素上应用类。

语法:

::pseudo-element-name

:一些早期的伪元素曾使用单冒号的语法,现代的浏览器为了保持后向兼容,支持早期的带有单双冒号语法的伪元素。

例如:选中 <p> 元素中文本内容第一行

<!DOCTYPE html>
<html lang="zh-CN">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>选中 p 元素中文本内容第一行</title>
    <style>
      article p::first-line {
        font-size: 120%;
        font-weight: bold;
      }
    </style>
  </head>
  <body>
    <article>
      <p>
        Veggies es bonus vobis, proinde vos postulo essum magis kohlrabi welsh
        onion daikon amaranth tatsoi tomatillo melon azuki bean garlic.
      </p>

      <p>
        Gumbo beet greens corn soko endive gumbo gourd. Parsley shallot
        courgette tatsoi pea sprouts fava bean collard greens dandelion okra
        wakame tomato. Dandelion cucumber earthnut pea peanut soko zucchini.
      </p>
    </article>
  </body>
</html>

伪元素代码结果
更多伪元素如下表:

选择器描述
::after匹配出现在原有元素的实际内容之后的一个可样式化元素。
::before匹配出现在原有元素的实际内容之前的一个可样式化元素。
::first-letter匹配元素的第一个字母。
::first-line匹配包含此伪元素的元素的第一行。
::grammar-error匹配文档中包含了浏览器标记的语法错误的那部分。
::selection匹配文档中被选择的那部分。
::spelling-error匹配文档中包含了浏览器标记的拼写错误的那部分。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值