谷歌,雅虎和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是否打破标准?
WHATWG HTML规范提到,LINK
-element可以具有rel
属性:
<link rel="…" />
或者itemprop
属性
<link itemprop="…" />
但不是两个。
rel
版本仅限于HEAD
元素,而itemprop
版本可能出现在HEAD
和BODY
元素中。
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?
BODY允许链接。我在HTML5中验证链接标记时遇到了同样的问题,我用它解决了这个问题
<link rel="stylesheet" property="stylesheet" href="css/homepage.css">
需要有property
和rel
标签
更新2016年(感谢下面的yuyokk):最近HTML5规范发生了变化,允许在体内有链接
最近HTML5 spec发生了变化,允许在体内有链接
简而言之,我想补充上面的答案
<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语法。
正如其他人所指出的那样,<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>
要确保代码与浏览器兼容,请将样式表包括在内:
<style>
@import url(style.css);
</style>
将样式表放在正文中通常被认为是不好的做法,但在某些情况下它可能会有所帮助: