为什么这么称呼伪类?

问题描述 投票:7回答:5
a:hover

为什么叫“伪类”?

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

css css-selectors pseudo-class
5个回答
5
投票

用CSS术语来说,类是一个以句号开头的选择器,例如

.foo { ... }

将以以下形式使用

<div class="foo">

[类别]的使用在某种意义上更多是“具有共同特征并通过种类或质量与其他事物区别的一组事物或类别”,而不是借用OO术语。

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


4
投票

pseudo,因为您没有做到;浏览器“创建”了它,并允许您对其进行设置以更改处于该状态的链接的外观。


1
投票

w3c CSS2 selector spec

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

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

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

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


1
投票

由于CSS2 / 3允许使用更复杂的元素规则(例如input [type = checkbox]之类的东西,术语伪类似乎越来越过时。

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

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

[我也很有趣地注意到,对于某些基于UI的伪类(我正在专门考虑:hover),在任何给定时间只有一个元素真正可以拥有该“类”,因此,伪ID,基于我的上述定义。


0
投票

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

跟随在理解HTML文档时经常使用的家庭隐喻,您可以想象一些思考自己的元素,比如第一个孩子,我是一个div以及第四个孩子(这意味着我的职位也是偶数...)对于用户引起的诸如悬停之类的事情,可以想象,当将标签或任何元素悬停在其上时,它会立即被分组到已触摸的事物中,并将应用相应的样式...如果可能的话,同时将它们悬停在两个元素上,它们将同时考虑到我们已经接触过的主题,因此属于该类(悬停在事物上),因此两者都采用适当的样式

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