Skip to content

CSS伪类选择器

写在最前

记录一下伪类选择器

链接伪类选择器

  • :link:选取未被访问过的链接,用于为用户尚未点击的超链接设置样式。
  • :visited:选取已经被用户访问过的链接,用于为用户之前点击过的超链接设置样式。
  • :hover:当用户指针(例如鼠标光标)悬停在某些元素(通常是链接)上时,选取这些元素。
  • :active:在元素(通常是链接或按钮)被激活时,例如用户点击它们的瞬间,选取这些元素。

focus

:focus 伪类用于选择当前获得焦点的元素。当用户与网页上的表单元素进行交互时,可以通过点击或键盘导航,使某个特定的输入框处于焦点状态。这意味着用户的输入将直接应用到该输入框上。

checked

:checked 伪类用于选择当前被选中或选择的单选按钮、复选框或 select 元素的选项。

:disabled & :enabled

  • :disabled 伪类用于匹配被禁用的表单元素,例如按钮或文本输入框。
  • :enabled 伪类用于匹配可以交互和接收输入的表单元素。

:valid & :invalid

  • :valid 伪类用于选择具有与其属性(如 pattern、type 等)所指定要求相匹配的内容的输入元素。
  • :invalid 伪类用于选择具有内容不符合要求的输入元素。

required & optional

  • :required 伪类用于选择具有 required 属性的输入元素,该属性表示在提交表单之前必须填写它们。
  • :optional 伪类用于选择没有 required 属性的输入元素,这意味着它们不是必填项。 当input 元素没有 required 属性时,可以使用 :optional 伪类选择它们。

:first-child & :last-child & :nth-child & :nth-last-child

  • :first-child 伪类用于选择父元素中的第一个子元素。
  • :last-child 伪类用于选择父元素中的最后一个子元素。
  • :nth-child 伪类根据元素在父元素中的位置进行选择,允许进行各种选择。:nth-child 还可以自定义模式选择元素:
    • :nth-child(odd) 或 :nth-child(2n+1) 选择每个奇数位置的子元素
    • :nth-child(even) 或 :nth-child(2n) 选择每个偶数位置的子元素
  • :nth-last-child 伪类与 :nth-child 类似,但是从最后一个子元素向后计数。

:first-of-type & :last-of-type & :nth-of-type & :nth-last-of-type

  • :first-of-type 伪类选择在其父元素中的特定类型的元素中的第一个元素。
  • :last-of-type 伪类选择在其父元素中的特定类型的元素中的最后一个元素。
  • :nth-of-type 根据元素在兄弟元素中的类型和位置选择元素时。
  • :nth-last-of-type 根据元素在兄弟元素中的类型和位置选择元素,并且从末尾开始计数时。

:only-child & :only-of-type

  • 当需要选择在其父级元素中唯一的一个子元素时,可以使用 :only-child 伪类。
  • 当需要选择在其兄弟元素中为特定类型的元素仅有一个的元素时,可以使用 :only-of-type 伪类。

:target

:target 用于选择具有与 URL 片段匹配的 ID 属性的元素。URL 片段是指 URL 中的 # 符号后面的部分。当从页面中的链接点击跳转到带有特定片段的 URL 时,:target 伪类将会被应用于与片段匹配的对应元素上。这样可以利用 :target 来为被直接链接到的页面部分设置不同的样式,从而提供视觉上的反馈和突出显示。

not() & has()

::before & ::after 伪元素

  • ::before 伪元素用于在元素内容之前插入内容。它可以用于添加装饰性内容、图标或其他不需要出现在实际 DOM 中的元素。
  • ::after 伪元素与 ::before 伪元素类似,用于在元素的内容之后插入内容。

::first-letter & ::first-line & ::selection & ::marker

  • ::first-letter 伪元素用于选择并修改块级元素的第一个字母,从而应用特定的样式。这个伪元素只能选择每个块级元素的第一个字母,并且仅在有文本内容的时候生效。
  • ::first-line 伪元素用于选择并修改块级元素的第一行,从而应用特定的样式。这个伪元素只能选择每个块级元素的第一行,并且仅在有文本内容的时候生效。
  • ::placeholder 伪元素用于选择并修改表单字段的占位符文本,从而应用特定的样式。占位符文本是在用户未输入任何内容时显示的默认文本。
  • ::selection 伪元素用于选择并修改用户所选文本的样式。可以应用于包含文本内容的任何元素,如段落、标题、按钮等。
  • ::marker 伪元素用于为列表项中的标记符设置样式,这些标记符通常包含无序列表的项目符号或有序列表的数字/字母。

focus-within

has +

其他伪类

  • :root:选择文档中最高级别的父元素,通常是HTML文档中的html元素。可用于定义对所有页面元素可用的CSS变量。
  • :is():匹配可以是多个选择器之一的元素,使得长的选择器列表更加简短和易读。例如,:is(h1, h2, h3) 会匹配这三个标题元素之一。
  • :where():与 :is() 类似,但允许根据条件选择元素,而不影响选择器的特异性。
  • :default:匹配设置为默认选择状态的用户界面元素(如单选按钮或复选框)。
  • :empty:选择没有子元素(包括文本节点)的元素。
  • :fullscreen:选择当前以全屏模式显示的元素。
  • :in-range:匹配值在指定范围内的表单元素(使用 min 和 max 属性指定范围)。
  • :out-of-range:匹配值在指定范围之外的表单元素。
  • :indeterminate:选择状态不确定的表单元素,例如既未选中也未取消选中的复选框(在树状结构中经常见到)。
  • :read-only:匹配由于 readonly 属性而不可编辑的表单元素。
  • :read-write:选择可由用户编辑的表单元素,意味着它们不是只读的。
  • :lang():根据元素的语言属性进行匹配。例如,:lang(en) 选择使用英语定义的元素。

其他伪元素

除了上述伪元素之外,CSS 还提供了以下伪元素:

  • ::file-selector-button:用于选择文件的按钮元素的伪元素。它可以用来样式化文件上传控件中的选择按钮。
  • ::cue:用于样式化媒体元素(如音频或视频)中的字幕或注释的伪元素。可以用来设置字幕的样式,比如字体、颜色等。
  • ::part():用于自定义 Web 组件的内部部件的伪元素。它可以针对组件的具体部分应用样式,并通过组件的 shadow DOM 提供的 Custom Elements API 进行访问。
  • ::slotted():用于样式化插槽内容的伪元素。插槽是一种在 Web 组件中用于插入内容的机制,::slotted() 可以应用样式到被插入的内容,以实现更精确的样式控制。