是否允许使用<link />(不是rel =“stylesheet”)?

时间:2011-06-04 10:07:52

标签: html5 w3c-validation

Google,Yahoo和MS的新schema.org建议使用<link>属性来显示在线商店中的商品状态:

<div itemscope itemtype="http://schema.org/Offer">
  <span itemprop="name">Blend-O-Matic</span>
  <span itemprop="price">$19.95</span>
  <link itemprop="availability" href="http://schema.org/InStock"/>Available today!
</div>

然而,according to w3schools.org <link>仅允许在头部:

  

注意:此元素仅在head部分中出现,但它可以出现任意次。

我不习惯W3C风格,所以我无法理解确切的definition by W3C。任何人都可以帮助我:是否真的允许在正文中使用<link>(在HTML5中,因为schema.org使用HTML5标签)或谷歌,雅虎和MS是否违反标准?

7 个答案:

答案 0 :(得分:53)

BODY允许链接。 我在HTML5中验证链接标记时遇到了同样的问题,我用这个解决了它

<link rel="stylesheet" property="stylesheet" href="css/homepage.css">

需要同时拥有propertyrel代码

2016年更新(感谢下面的yuyokk): 最近HTML5规范发生了变化,允许在正文中添加链接

答案 1 :(得分:29)

WHATWG HTML规范提到,LINK - 元素可以具有rel - 属性:

<link rel="…" />

itemprop - 属性

<link itemprop="…" />

但不是两者。

rel - 版本仅限于HEAD - 元素,而itemprop - 版本可能同时出现在HEADBODY中 - 元件。

http://www.whatwg.org/specs/web-apps/current-work/multipage/semantics.html#the-link-element

这是什么WHATWG规范:

whatwg.org/specs/web-apps/current-work/multipage/introduction.html#is-this-html5?

答案 2 :(得分:10)

最近HTML5 spec发生了变化,允许在正文中添加链接

答案 3 :(得分:4)

我想补充上面的答案,简而言之

<body>
    <link rel="stylesheet" property="stylesheet" href="pathto.css">
</body>

正在使valdation错误消失。即使只添加property=""(RDFa语法或itemprop=""(微格式语法)属性也足够了。正如@Jukka K. Korpela@sideshowbarker在他们的答案中解释的那样,原因在于{{3 }。

上面的解决方案基本上是一种解决方法,让验证者在关键路径实现中根据需要忽略内联样式表。 在验证器的未来版本中,它有望过时。

顺便说一句,在HTML5中,您既不需要HTML5+RDFa 1.1 spec也不需要type attribute语法。

答案 4 :(得分:0)

正如其他人所指出的,<link>可以在体内使用,但只能在某些时候使用。在那些情况下,它被称为“身体正常”。下面列出了可以正常使用的链接类型:https://html.spec.whatwg.org/multipage/links.html#body-ok

自2018年6月20日起,可在体内使用以下物品:

<body>
    <link rel="dns-prefetch">
    <link rel="modulepreload">
    <link rel="pingback">
    <link rel="preconnect">
    <link rel="prefetch">
    <link rel="preload">
    <link rel="prerender">
    <link rel="stylesheet">
</body>

答案 5 :(得分:0)

要确保代码与跨浏览器兼容,请添加如下样式表:

<style>
   @import url(style.css);
</style>

在主体中放置样式表通常被认为是不好的做法,但是在某些情况下可能会有所帮助:

  1. 您希望样式先于其他元素加载
  2. 如果使用php包含某些经常出现的网站元素(联系人框,菜单标题等),则可以将指向相应样式表的链接放入php模板。包含模板后,样式表将自动加载,而无需在头部添加任何内容。

答案 6 :(得分:0)

截至2020年3月的规范:

如果使用rel属性,则有时只能在页面的body中使用该元素。当与itemprop属性一起使用时,该元素可以在页面的head元素和页面的body中使用,但要遵守微数据模型的约束。

与就rel属性而言,已接受的答案所说的相反。我个人从未遇到过在rel中添加head的问题。

Microdata是WHATWG HTML规范,用于将元数据嵌套在网页上的现有内容中。浏览器,网络爬虫,尤其是搜索引擎可以从网页中提取和处理微数据,并使用它为用户提供更丰富的浏览体验。