用CSS隐藏微数据是否可行?

21

假设我有一个包含大量文本的HTML文档。将包含细微数据的元素隐藏起来,以使用户无法看到它们,这种做法是否“好”(~不差)?

假设我有以下内容:

<div style="display:none" itemscope...>some microdata describing div below</div>
<div> There is actual text that is described by microdata</div>

关键在于这种方法可能更容易描述第二个

。您无需更改整个文本,只需添加一些元素并隐藏它们即可。我想创建一个简单的HTML编辑器,支持创建微数据,这种方式似乎更容易实现,并且对于使用者也更容易使用(首先创建实际内容,然后注释它)。

6个回答

33

schema.org有一种实际的方法可以“隐藏”微数据:

http://schema.org/docs/gs.html#advanced_missing

如果您正在尝试影响SEO,那么“隐藏”您的语义标记数据不会使其失去机器可读性(对于机器人/蜘蛛),这并不违背初衷。

如果您的schema.org标记格式正确,谷歌不会因为您“隐藏”价值而惩罚您的索引排名。


你知道Google是否尊重这个吗?在我开发的网站中,内容持有者是一个<table>,并且被设计成像日历一样(希望在Google中拥有事件丰富片段),因此,事件包含在它们各自的日期/天数中,对于用户来说是隐含的,如果不能使用<meta>,那就没有意义了...否则,Google就会变得狭隘,只能以一种方式显示事件... - Breno Salgado
我之所以问这个问题,是因为在富格式页面上,他们明确表示这些富片段内容不应该对用户隐藏... - Breno Salgado
1
@BrenoSalgado 谷歌完全支持并支持Schema.org :) - Swivel
6
来自schema.org:“这种技术应该节制使用。” 来自谷歌:“通常,谷歌不会在富媒体片段中显示任何对人类用户不可见的内容。” - Chuck Le Butt
我正在进行这项工作,而谷歌正在使用这些数据。我有一个显示“1分钟”的值,然后是一个提供ISO格式的meta标签,即“PT1M”,谷歌在其结果中显示了该值。 - Tim Tisdall

7
隐藏用Microdata标记的内容有点违背了它的意义,它旨在为已经在页面上可见的内容添加附加信息。主要的论据是人们总是记得更新可见内容,但经常忘记更新他们看不见的内容,因此隐藏的“元”内容经常过时和不准确。相反,Microdata采用描述可见内容的方法,因此如果内容发生变化,它产生的数据也会随之改变。以这个来自规范的例子为例:
<h1 itemprop="fn">
  <span itemprop="n" itemscope>
    <span itemprop="given-name">Jack</span>
    <span itemprop="family-name">Bauer</span>
  </span>
</h1>

如果您更改可见内容,Microdata标记实际上并不会发生任何改变:
<h1 itemprop="fn">
  <span itemprop="n" itemscope>
    <span itemprop="given-name">Tim</span>
    <span itemprop="family-name">Berners-Lee</span>
  </span>
</h1>

所以,Microdata 几乎肯定不是您想在您的情况下使用的内容。相反,您应该根据您需要这些信息的确切目的来选择使用什么。如果您想添加用于处理站点上脚本的隐藏数据,则应使用 data-* 属性。如果您想添加其他描述性信息,而并非所有用户都需要查看,请考虑使用 ARIA,特别是在您的情况下,aria-describedby

3
我有同样的问题;我有4页。我必须在页面上添加面包屑信息,但我不希望这些面包屑在网页上可见。但是那些数据需要被Google丰富片段显示获取。 - user1769790

7

schema.org和Google在官方文档[1]中明确表示,你不应该标记隐藏内容:

更多的内容是更好的,除了隐藏的文本。通常来说,你标记的内容越多,越好。然而,作为一般规则,你应该只标记对访问网页的人可见的内容,而不包括隐藏在div或其他隐藏页面元素中的内容。

你可以使用html标签中的linkmeta来标记那些需要对用户隐藏的内容:

例如,你想通过使用meta标签来隐藏微数据。

举个例子:

<div itemscope itemtype="http://schema.org/Product">
    <span itemprop="name">Funky Skirt</span>
    <div itemprop="offers" itemscope itemtype="http://schema.org/Offer">
        <meta itemprop="price" content="100.00" />
        <link itemprop="availability" href="http://schema.org/InStock" />In stock
    </div>
</div>

[1] http://schema.org/docs/gs.html


他们的文档中说“一般规则”而不是“绝对不允许”,他们想表达的是不要试图使用隐藏内容作为SEO策略来进行关键词堆积,否则你就会陷入惩罚的领域。当你想打破这个“一般规则”时,你仍然可以使用隐藏内容来实现自己的目的,但不要试图通过关键词密度来提高排名。 - Rowe Morehouse

6

1
你会对隐藏数据做些什么吗?我会使用HTML注释或标题属性。
HTML注释:
<!-- This is an HTML Comment -->
<div>Content</div>

标题属性:

<div title="some information describing div">Content of div</div>

HTML注释与编程语言中的注释一样,只不过它们会传递到客户端。标准的标题元素属性(适用于所有HTML元素)包含有关元素的额外信息,并在悬停在元素上时用作工具提示。

例如,您接受率上方的HTML如下:

<div class="accept-rate cool" title="this user has accepted an answer for 4 of 6 eligible questions">67% accept rate</div>

如果你将鼠标悬停在上面,它会显示“该用户已接受6个问题中的4个答案”。


谢谢,不幸的是,我需要微数据,因为它们将用于其他目的,而微数据(或RDFa等)提供了比标题或注释更好的添加一些语义信息的方法。 - ladar

0

如果我们谈论 Google 处罚,那么你必须仔细阅读你正在处理的富媒体片段类型的文档。

例如,如果我采取产品富媒体片段,请参照文档(https://support.google.com/webmasters/answer/146750?hl=en#offer_properties),只有指定的字段: 当隐藏时,Google 识别以下产品标签的特定机器可读值不会被忽略:

  • 类别
  • priceValidUntil
  • priceCurrency
  • 价格
  • 标识符
  • 条件

因此,这些字段的最佳方式是在元标记中使用它们。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接