5

<pseudo> </pseudo>?

CSS 的伪元素不在 DOM 中。但在内部,它们必须等同于某种通用 HTML 元素,因为它们可以设置样式、可见并且影响页面流。

伪元素的元素类型是什么?

我们可以在不使用 CSS 的情况下以编程方式创建它们吗?

4

1 回答 1

5

就文档语言而言,伪元素没有元素类型,因为正如您所说,它们在 DOM 中不存在,并且可以从“伪”前缀推断,它们不是“真实的”元素。CSS 只是将它们称为伪元素,但是您有不同的伪元素用于不同的目的或元素结构的不同部分,例如不言自明的::first-letterand::first-line::beforeand::after用于在元素的实际内容之前和之后生成内容。

那些影响页面流的伪元素与 DOM 无关。浏览器使用 CSS 将 DOM 元素布局和格式化为可以呈现到屏幕的对象,并在此过程中创建伪元素作为为真实元素制作的框的后代。尽管您通常将伪元素附加到元素上,但您并没有以任何方式更改 DOM。相反,您只是改变浏览器布局页面的方式。

因为伪元素是 CSS 独有的概念(在Selectors 模块中定义),所以您不能使用 CSS 以外的任何东西创建它们。伪元素作为 CSS 概念的实现是在CSSOM中定义的,它是 DOM 的 CSS 等价物(并且在其中window.getComputedStyle()定义了类似的方法)。但是我对 CSSOM 不是很熟悉,所以我不能进一步评论它们在 CSS 方面的实现与真实元素非常相似。

于 2013-03-17T12:27:13.413 回答