Css 为什么称为伪类?

Css 为什么称为伪类?,css,css-selectors,pseudo-class,Css,Css Selectors,Pseudo Class,为什么它被称为“伪类” 与“类”的概念有什么相似之处吗?它是伪的,因为你没有做到;浏览器“创建”了它,并允许您将其设置为在链接处于该状态时更改链接的外观。在CSS术语中,类是以句号开头的选择器,例如 a:hover 它将在表单中使用 .foo { ... } “类”的使用更多的是指“一组或一类具有共同特征的事物,并通过种类或质量与其他事物区分开来”,而不是借用OO术语 伪类“不是真正的类”,因为用户代理定义了何时和/或多少内容符合条件(如:hover,:active,等等)。来自: CS

为什么它被称为“伪类”


与“类”的概念有什么相似之处吗?它是伪的,因为你没有做到;浏览器“创建”了它,并允许您将其设置为在链接处于该状态时更改链接的外观。

在CSS术语中,类是以句号开头的选择器,例如

a:hover
它将在表单中使用

.foo { ... }

“类”的使用更多的是指“一组或一类具有共同特征的事物,并通过种类或质量与其他事物区分开来”,而不是借用OO术语

伪类“不是真正的类”,因为用户代理定义了何时和/或多少内容符合条件(如
:hover
:active
,等等)。

来自:

CSS引入了伪元素和伪类的概念,以允许基于文档树之外的信息进行格式化

  • 伪元素创建文档树的抽象,超出了文档语言指定的抽象。例如,文档语言不提供访问元素内容的第一个字母或第一行的机制。CSS伪元素允许样式表设计人员引用此不可访问的信息。伪元素还可以为样式表设计人员提供一种方式,将样式分配给源文档中不存在的内容(例如:before和:after伪元素允许访问生成的内容)

  • 伪类根据元素的名称、属性或内容以外的特征对元素进行分类;原则上,不能从文档树中推断出的特征。伪类可能是动态的,即当用户与文档交互时,元素可能获取或丢失伪类。例外情况包括:first child(可以从文档树中推断),以及:lang()(在某些情况下可以从文档树中推断)


因此,基本上,伪类是可以附加样式的东西,但您永远不会自己在HTML中打印出来。此外,根据用户与UI的交互,可能会获得和丢失伪CLA。

由于CSS2/3允许更复杂的元素规则(例如输入[type=checkbox]等),术语伪类似乎越来越过时

但是,伪类是唯一(或多或少)随着用户交互而可靠更改的CSS标识符。使用属性选择器之类的工具,大多数浏览器倾向于按照页面加载时所有元素的状态进行操作,并且忽略所做的任何更改。但使用伪类,当伪类变为真时,它们实际上会更改样式(或不真实)

考虑到这个特定的定义,它们是类,因为规则适用于共享相同“状态”的任何元素,因此可以被视为“类”,但它是伪的,因为它不是一个真正的属性定义的类,并且在任何给定的页面查看时间,“类”可能是真的,也可能不是真的


我认为,值得注意的是,对于某些基于UI的伪类(我特别想到的是
:hover
),在任何给定时间只有一个元素可以真正拥有该“类”因此,根据我上面的定义,它几乎更多地是一个伪id。

我想把它们称为伪类,因为它们不是由作者明确定义的,而是一种逻辑或心理构造,至少从作者甚至用户代理的角度来看


按照理解HTML文档时经常使用的家庭隐喻,您可以想象一些元素会自言自语,比如well是第一个孩子,i是一个div,也是第四个孩子(这意味着我的位置也是偶数)…至于像悬停这样的由用户引导的东西,我们可以想象,当a标记或任何元素悬停在上面时,它会立即在被触摸的东西之间分组,并应用相应的样式…如果可能的话,它们会同时悬停在两个元素上,它们会认为是主题自我我们被感动了,因此属于这个阶级(徘徊在事物之上)因此,它们都采用相同的样式

但为什么它是一个类?如果一次只能在屏幕上悬停或一个区域,那么在任何时候只有一个p可以接受CSS规则。类不是意味着属于某个公共组的多个元素,而类样式规则意味着所有元素都将继承该规则吗?@Anthony:伪类可以是assum每个元素都可以通过
:hover
进行分类。因此每当
元素获得状态hover时,都可以使用
:hover
进行选择。
<div class="foo">