CSS :不是选择器混淆行为

CSS :not selector confusing behavior

这里参考了这个codepenhttps://codepen.io/jamesbarnett/pen/vlpkh?editors=1100

我正在寻找一些纯粹的 CSS 星级评分系统。我真的对这个声明感到困惑 .rating:not(:checked) > label:hover

谁能解释一下这怎么可能?? .rating 是一个字段集元素。我们如何才能将 :not(:checked) 选择器应用于它。它永远不会被检查。如果这是 .rating input:not(:checked),那对我来说就有意义了。

它是否以某种方式选择其中的输入。因为我找不到任何支持 CSS :not 选择器这种行为的文档。

我无法理解它是如何工作的。

由于具有 class 'rating' 的元素不是可检查的输入元素,因此 :checked 伪 class 永远不会匹配。

相反,not(:checked)总是 匹配 (demo) - 使其在功能上冗余(除了为了增加特异性),因此可以安全地省略

请注意,您可以从该选择器中删除伪 class,并且演示仍然有效 (updated codepen).