6

我正在尝试使用 Google Web Fonts,并且在官方网站上建议使用<link>包含属性的标签type,如下所示:

<link href='http://fonts.googleapis.com/css?family=Ubuntu:400,700' rel='stylesheet' type='text/css'>`

在官方 HTML5 样板站点中,他们省略了该type属性

<link rel="stylesheet" href="http://fonts.googleapis.com/css?family=Open+Sans:400,700">

根据这个相当古老的答案,在 HTML5 中,该type属性在标签上是可选的,在<style>标签上是强制性的<link>

但是,没有属性的版本typeW3C 验证器上验证良好。

那么,该type属性是强制性的还是不是强制性的?

4

2 回答 2

6

我在官方 W3C HTML5 草案中找到了答案:

type 属性给出了链接资源的 MIME 类型。这纯粹是建议性的。该值必须是有效的 MIME 类型。

对于外部资源链接,type 属性用作对用户代理的提示,这样他们就可以避免获取他们不支持的资源。如果属性存在,那么用户代理必须假定资源是给定的类型(即使那不是一个有效的 MIME 类型,例如空字符串)。如果省略该属性,但外部资源链接类型定义了默认类型,则用户代理必须假定资源属于该类型。(...)

用户代理不得认为 type 属性具有权威性——在获取资源时,用户代理不得使用 type 属性来确定其实际类型。只有实际类型 (...)。

样式表链接类型定义了处理资源的 Content-Type 元数据的规则。(...)

如果文档包含如下标记的样式表链接:

 <link rel="stylesheet" href="A" type="text/plain">
 <link rel="stylesheet" href="B" type="text/css">
 <link rel="stylesheet" href="C">

...然后,仅支持 CSS 样式表的兼容 UA 将获取 B 和 C 文件,并跳过 A 文件(因为 text/plain 不是 CSS 样式表的 MIME 类型)。

对于文件 B 和 C,它将检查服务器返回的实际类型。对于那些作为 text/css 发送的,它会应用样式,但对于那些标记为 text/plain 或任何其他类型的,它不会。

如果返回的两个文件之一没有 Content-Type 元数据,或者语法不正确的类型(如 Content-Type:“null”),则样式表链接的默认类型将生效。由于该默认类型是 text/css,样式表仍然会被应用。

对于该<style>属性,同一文档指出:

type 属性给出了样式语言。如果该属性存在,则其值必须是指定样式语言的有效 MIME 类型。不得指定 charset 参数。type 属性的默认值(如果该属性不存在则使用)是“text/css”。[RFC2318]

于 2013-07-09T17:35:15.823 回答
0

我认为这不是强制性的,我已经成功使用过<style>,而且<style type="text/css">..您使用的任何东西都可以正常工作,例如<script><script type="text/javascript"> 以相同的方式工作:)

于 2013-07-09T17:46:35.390 回答