[译]谷歌是否索引CSS伪元素的文本内容

352 阅读4分钟

「CSS 可以通过伪元素向网页添加文本内容,作者做了一个实验,看看谷歌会不会索引 CSS 引入的文本」

传统上来说,当谷歌(或其他搜索引擎)对基于文本的内容进行索引时——他们希望直接能在提供给他们的网页HTML中找到这些内容。

随着一些网站使用JavaScript提供从小块内容或提供整个网站内容这种模式的兴起,这种情况有所改变。

谷歌被迫投入资源,试图尽可能有效地呈现和索引给予JavaScript的内容。

CSS伪元素

但是如何考虑纯粹来自CSS的文本内容呢?我们知道可以使用CSS伪元素(例如::before::after)与CSS content属性结合向页面添加内容。

看看下面的简单示例:

<p>99 bottles of beer on the wall, 99 bottles of beer.</p>
p::after {content:' Take one down and pass it around, 98 bottles of beer on the wall.'}

将会呈现这样的内容:

99 bottles of beer on the wall, 99 bottles of beer. Take one down and pass it around, 98 bottles of beer on the wall.

年复一年,随着CSS变得更加先进并引入其他功能,例如仅使用CSS进行数学计算计算元素的能力,开发人员和设计师采用这些功能的可能性将会变高。

但是谷歌能够呈现和索引折现内容吗?在CSS中写入的文本会出现并可以被Google搜索到吗?

使用CSS呈现文本是最佳选择吗?

在我们开始之前,需要注意的是,在大多数情况下,出于各种原因,使用CSS伪元素和content属性(而不是HTML)在网页上显示任何大量基于文本的内容,绝对不是最佳选择。其缺点包括:

  1. 用户无法选择文本,这意味着它无法突出显示或进行复制粘贴。
  2. 屏幕阅读器将忽略文本——这将使内容无法访问并违背了可访问性手册。

F87: 由于使用:before:after伪元素,以及CSS中的content属性插入非装饰性元素,将会导致成功标准1.3.1失败。

--- Techniques for WCAG 2.0 (w3.org)

CSS伪元素一般来说应该只用于页面内容中一些不重要的装饰元素。

SEO优化调查

在撰写本文之前,我无法找到任何有关于此主题的与SEO相关的文章,因此我认为深入研究可能会很有趣,于是我进行了此项实验。

我在Twitter民意调查中询问了SEO社区他们的想法,结果如下:

image-20210809135829164.png

剔除只想看结果的用户,选择「否」和「我不知道」的用户获得相同数量的选票,选择「是」的用户票数相对较少。

实验

为了进行测试,我创建了一个不包含标准HTML内容的页面,并使用CSS伪元素附加到标题、段落、div和链接标签上——这些都来自于外部的CSS文件。

你可以在此处查看CodePen上的代码和结果页面。

渲染

为了进行测试,我还使用搜索console中的Fetch工具和Mobile Friendly测试工具运行了该页面。

两者都表明Google能够完全呈现页面上普通用户所看到的CSS内容

结果

最终(有点出乎我的意料)该页面确实在Google中被编入索引。

然而,在谷歌中检查结果列表,并从页面搜索文本字符串后——很明显,没有实际内容被索引到。

img

所以我们可以确认,标题的答案是:——尽管谷歌可以呈现它,但是基于CSS的内容目前不会在谷歌中被编入。

目前来讲,如果您使用的CSS伪元素和CSS content属性在您的网站上包含文本内容,那么谷歌无法为文本内容编制索引。

更新(2021/7/14)

Jess Peck提醒我注意她之前对同一个主题进行的测试。以及Mathias Bynens的另一篇文章/实验:它根本不使用任何HTML

相关文章