9
a:hover

为什么叫“伪类”?

与“类”的概念有什么相似之处吗?

4

5 回答 5

6

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

.foo { ... }

它将以形式使用

<div class="foo">

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

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

于 2009-08-15T07:54:01.257 回答
4

它是的,因为你没有做到;浏览器“创建”了它,并允许您将其设置为在链接处于该状态时更改链接的外观。

于 2009-08-15T07:51:59.433 回答
2

来自w3c CSS2 选择器规范

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

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

  • 伪类根据元素的名称、属性或内容以外的特征对元素进行分类;原则上无法从文档树中推断出的特征。伪类可能是动态的,从某种意义上说,当用户与文档交互时,元素可能会获取或丢失伪类。例外是 ':first-child',它可以从文档树中推导出来,而 ':lang()',它可以在某些情况下从文档树中推导出来。

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

于 2009-08-15T08:13:26.850 回答
1

随着 CSS2/3 允许更复杂的元素规则(像 input[type=checkbox] 之类的东西,伪类这个术语似乎越来越过时了。

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

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

值得注意的是,我认为,对于某些基于 UI 的伪类(我特别考虑:hover),在任何给定时间只有一个元素可以真正拥有那个“类”,所以它几乎更像是一个伪 ID,根据我上面的定义。

于 2009-08-15T08:48:08.447 回答
0

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

遵循在理解 HTML 文档时经常使用的家庭隐喻,您可以想象一些元素对自己的想法,比如我是第一个孩子,我是一个 div,也是第四个孩子(意味着我的位置也是偶数)......并且作为对于诸如悬停之类的用户诱导的事情,可以想象当 a 标签或任何元素悬停在其上时,它会立即在已触摸的事物中分组,并且将应用相应的样式......如果可以悬停两个元素同时他们会同时认为我们被感动了,因此属于类(悬停在事物上),因此两者都具有相同的风格

于 2019-12-22T22:00:42.780 回答