CSS 伪类 vs. 伪选择器

7

这可能是一个有点学究气的问题,但或许值得问一下。在CSS中,伪类和伪选择器机械上是否有区别?我们在这里交替使用这两个术语,但似乎这两个术语是有原因的。有没有区分它们的任何用处?

3个回答

11

伪类是一个具体的东西, 而伪选择器是一个虚构的词。

(与此同时,当满足某些条件时(例如鼠标指向它,或者它是其父元素的第一个子元素),伪类匹配元素,而伪元素是可以被匹配但不是真正的或整个元素,例如“元素之前的内容”或“元素内第一行文本”。)


7

pseudo-selector在W3C网站上出现过,但我的初步搜索表明它是一个已经被pseudo-class取代的古老术语:

pseudo-selector

页面伪选择器:first

http://www.w3.org/TR/2004/CR-css-print-20040225/#section-selectors

CSS有一个“lang”伪选择器,根据媒体类型自动使用适当的属性

http://www.w3.org/TR/xhtml-media-types/

pseudo-class

5.11.4 语言伪类::lang

http://www.w3.org/TR/CSS2/selector.html#lang

...等等。

伪元素和伪类

然后是关于伪元素伪类的描述:

http://www.w3.org/TR/CSS2/selector.html#pseudo-elements

所以在我看来,伪选择器已经不再流行了...


我认为“伪选择器”是一个便于通用的术语,用于选择“伪类”和“伪元素”。这只是一个想法(与丹·海伯登对他自己答案的评论相似)。 - Mike
我来晚了,但我认为为两个完全不相关的事情使用通用的总称毫无意义。他们小心地停止使用“伪选择器”这个术语是一件好事... - BoltClock

2

伪类是实际的伪元素,例如:hover、:active等。

伪选择器是包含/使用伪类的完整选择器,例如a:hover、a:active。

但是伪类才是人们应该说/输入的。我认为伪选择器来自于人们知道有“伪”和“选择器”,所以“为什么不将它们放在一起呢?”这样的想法。


我不确定这个伪选择器的概念...你有任何参考资料吗?因为现在我更倾向于@david dorward的答案。 - marcgg
我对伪类有参考资料,因为它被定义为“active”或“hover”。 术语选择器只是选择器。 如果我有input[name=username] - 那就是一个 选择器 。 没有参考资料,只有常识和逻辑 :) - Dan Heberden
你的第一句话自相矛盾(伪类不是伪元素)。第二句话似乎与人们使用“伪选择器”这个术语的方式不符,但无论如何,该术语是非官方的、口头的,而且完全错误,这就是为什么没有参考资料的原因。 - BoltClock
1
顺便提一下,CSS3选择器规范a:hovera:active之类的内容称为“简单选择器序列”,而CSS4草案则称其为“复合选择器”。这些是由简单选择器链或组成的,它们之间没有任何组合符号。因此,我们有一些官方术语可用,这让像我这样的学究感到满意 ;) - BoltClock
CSS2.1 规范 的一个重要区别是:“伪类可以出现在选择器的任何位置,而 伪元素 只能附加在选择器的最后一个简单选择器之后。” 这有助于我通过暂时忘记“伪”这个词,只考虑类和元素之间的区别来区分它们。 - squidbe

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接