在CSS中的伪选择器之后添加类选择器

问题描述 投票:0回答:2

我可以在 CSS 规则中的伪类之后添加类选择器吗,例如:

a:hover.my-class {
    background: red;
}

因此,如果我将鼠标悬停在锚标记上,

<a class="my-class">link</a>
,所有浏览器中的背景都会是红色吗?这是有效的 CSS 吗?


为什么我需要这个

我有这个问题,因为它是从 SASS 中的 mixin 生成的:

@mixin focus($classA, $classB) {
  &:focus {
    &#{$classA} {
      background: blue;
    }

    &#{$classB} {
      background: yellow;
    }
  }
}

a {
  @include focus('.class-a', '.class-b')
}
css sass css-selectors pseudo-class
2个回答
3
投票

不存在“伪选择器”这样的东西。

以“pseudo-”开头的选择器有两个特性:伪类和伪元素。它们是完全不同的功能,具有不同的语法规则。

可以将类选择器放置在伪类之后,例如

:hover
,因为它们都是简单选择器,并且复合选择器中简单选择器的顺序并不重要(类型和通用选择器是此规则的唯一例外) — 它们总是必须排在第一位,例如您示例中的
a
)。

不能将类选择器放置在伪元素(例如

::before
)之后,因为伪元素不是简单的选择器。您的问题可能不是关于伪元素,但必须做出这种区分,因为术语“伪选择器”的常见使用,它错误地将这两个功能分组为一个总括术语(坦率地说,使问题比它真的需要)。


1
投票

是的,您可以将类添加到伪类中。

这个CSS是有效的并且可以工作:

a:hover.hoverme {
  background:blue;
  color:white;
}

这也有效:

a.hoverme:hover {
  background:blue;
  color:white;
}

或者你可以在类后面添加一个伪类。

.hoverme:hover {
  background:blue;
  color:white;
}
<a href="#" class="hoverme">Hover me!</a>

您可以在 W3C 的 CSS Validator 页面检查您的 CSS 是否有效。

© www.soinside.com 2019 - 2024. All rights reserved.