Tha*_*Guy 4 html css webfonts google-webfonts
我正在尝试使用Google Web Fonts,并且在官方网站上它建议使用<link>包含该type属性的标记,如下所示:
<link href='http://fonts.googleapis.com/css?family=Ubuntu:400,700' rel='stylesheet' type='text/css'>`
Run Code Online (Sandbox Code Playgroud)
在官方的HTML5样板网站中,他们省略了该type属性
<link rel="stylesheet" href="http://fonts.googleapis.com/css?family=Open+Sans:400,700">
Run Code Online (Sandbox Code Playgroud)
根据这个相当古老的答案,在HTML5中,type属性在<style>标签上是可选的,在标签上是必需的<link>.
但是,没有typeattribule 的版本在W3C验证器上验证正常.
那么,type属性是否是强制性的?
我在官方的W3C HTML5草案中找到了答案:
type属性提供链接资源的MIME类型.这纯粹是建议性的.该值必须是有效的MIME类型.
对于外部资源链接,type属性用作用户代理的提示,以便它们可以避免获取它们不支持的资源.如果属性存在,则用户代理必须假定资源属于给定类型(即使它不是有效的MIME类型,例如空字符串).如果省略该属性,但外部资源链接类型已定义默认类型,则用户代理必须假定该资源属于该类型.(......)
用户代理不得将type属性视为权威的 - 在获取资源时,用户代理不得使用type属性来确定其实际类型.只有实际的类型(...).
样式表链接类型定义用于处理资源的Content-Type元数据的规则.(......)
如果文档包含标记如下的样式表链接:
Run Code Online (Sandbox Code Playgroud)<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]