元素上的 type="text/css" 是强制的吗?

2023-12-23

我正在尝试使用 Google Web Fonts,并在官方网站上它推荐 http://www.google.com/fonts/#QuickUsePlace:quickUse/Family:Ubuntu用一个<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">

根据这个相当旧的答案 https://stackoverflow.com/a/7031817/798677,在 HTML5 中type属性是可选的<style>标签和强制<link> tag.

然而,没有的版本type属性验证良好W3C 验证器 http://validator.w3.org/.

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


我在上面找到了答案W3C HTML5 官方草案 http://www.w3.org/TR/2012/WD-html51-20121217/document-metadata.html#document-metadata:

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

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

用户代理不得认为类型属性具有权威性——基于 获取资源时,用户代理不得使用 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,它将检查返回的实际类型 服务器。对于那些以文本/CSS 形式发送的内容,它将应用 样式,但对于那些标记为文本/纯文本或任何其他类型的样式,它 不会。

如果返回的两个文件之一没有内容类型元数据, 或者使用语法不正确的类型,例如 Content-Type: "null",然后 样式表链接的默认类型将会生效。从那时起 默认类型是text/css,样式表仍然是 应用。

For the <style>属性,同一份文件指出:

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

元素上的 type="text/css" 是强制的吗? 的相关文章