<!DOCTYPE html>
...
<link rel='stylesheet' id='basecss-css' href='http://www.someurl.com/modules/14ce1e21/peadig-eucookie.css' type='text/css' media='all' />
为什么验证器(http://validator.w3.org/)拒绝这个?我不知道什么属性是“必需的”?
错误:
错误行408,列142:元素链接缺少必需属性 属性。 ... / modules / 14ce1e21 / peadig-eucookie.css'type ='text / css' media ='all'/&gt;元素链接的属性:全局属性href crossorigin rel media hreflang type sizes另外,title属性 在这个元素上有特殊的语义。
答案 0 :(得分:91)
添加
property='stylesheet'
如果您不想将链接移至文档的<head>
。
<link rel='stylesheet' property='stylesheet' id='basecss-css' href='http://www.someurl.com/modules/14ce1e21/peadig-eucookie.css' type='text/css' media='all' />
答案 1 :(得分:82)
@stevelove的建议显然是切实可行的解决方案,但这里是“为什么”问题的理论答案:
虽然旧版HTML规范link
中的body
元素无条件无效,但HTML5具有更宽松的规则。根据HTML 5.1 Nightly(这或多或少是验证器试图跟上的内容),文档正文中也允许link
element(只要允许使用短语内容),前提是它具有{{ 1}}属性。这似乎使错误信息更加令人费解。部分解释是验证器实际上是针对HTML5 + RDFa进行验证,而RDFa定义了itemprop
属性。问题仍然是验证器正在检查的特定RDFa定义,因为定义也需要重新定义HTML规则。
无论如何,错误消息中的信息已过时。错误消息显然没有像验证器的基本功能那样快速更新。
答案 2 :(得分:43)
<link>
是否在<body>
内?如果是这样,请尝试将其放在文档顶部的<head>
。
答案 3 :(得分:14)
这里是W3C HTML5验证器维护者。正如另一个答案所指出的,除了检查HTML5规范本身的要求之外,验证器还会检查HTML + RDFa 1.1规范中的要求:
http://www.w3.org/TR/html-rdfa/
虽然HTML规范本身通常在正文*中不允许link
,但RDFa规范指出,如果link
元素具有property
属性,则允许身体。
因此验证器消息基本上是这样说的,“link
元素只有在具有property
属性时才允许使用。但是这个特殊的link
元素没有property
属性。“
* HTML规范本身也表示如果link
元素具有itemprop
属性,则允许link
元素 - 但仅当rel
元素没有itemprop
值。property
(link
是“微数据”属性,其目的与RDFa {{1}}属性基本相同。)
因此,我们有两个不同的属性,它们独立地影响文档中允许出现{{1}}元素的位置,并且使得验证器中的检查逻辑复杂化,使得难以发出更好的元素,这种情况下更有用的错误消息。
答案 4 :(得分:0)
它希望它在你的头脑中。但是,如果css不太重要,无法立即加载,您将获得google的pagespeed工具,告诉您将其放在正文的底部。
作为一个例子,我使用jquery主题之一(redmond)来设置自动完成的样式。不需要把它放在我的页面顶部,因为它只会减慢其他一切。
所以,不要过分担心完美的w3c验证。
答案 5 :(得分:0)
仅为了将来的需求,这是我的评论:
在w3c page中,我们有以下评论:
如果使用rel属性,则元素仅限于头部 元件。当与itemprop属性一起使用时,元素可以是 在头部元素和页面正文中使用,受制于 微观数据模型的约束。
因此,可以通过更改rel
的{{1}}来解决错误,因为itemprop
将在头部使用,rel
可以在正文中使用。< / p>
希望它对某人有帮助。