是 (不是rel =“stylesheet”)允许使用 ?

问题描述 投票:40回答:6

谷歌,雅虎和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是否打破标准?

html5 w3c-validation
6个回答
29
投票

WHATWG HTML规范提到,LINK-element可以具有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?


53
投票

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

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

需要有propertyrel标签

更新2016年(感谢下面的yuyokk):最近HTML5规范发生了变化,允许在体内有链接


10
投票

最近HTML5 spec发生了变化,允许在体内有链接


4
投票

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

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

正在使瓦解错误消失。即使只是添加property=""(RDFa语法或itemprop=""(Microformat语法)属性就足够了。正如@Jukka K. Korpela@sideshowbarker在他们的答案中解释的那样,原因在于HTML5+RDFa 1.1 spec

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

顺便说一下,在HTML5中你既不需要type attribute也不需要self-closing tag语法。


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>

0
投票

要确保代码与浏览器兼容,请将样式表包括在内:

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

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

  1. 您希望在其他元素之前加载样式
  2. 如果您通过php包含某些经常出现的网站元素(联系人框,菜单标题等),您可以将链接到相应的样式表到php模板中。包含模板后,样式表将自动加载,而无需向头部添加任何内容。
© www.soinside.com 2019 - 2024. All rights reserved.