--- title: :外部资源链接元素 slug: Web/HTML/Element/link tags: - HTML - Web - 元数据 - 元素 - 参考 translation_of: Web/HTML/Element/link ---
{{HTMLRef}}

HTML外部资源链接元素 (<link>) 规定了当前文档与外部资源的关系。该元素最常用于链接样式表,此外也可以被用来创建站点图标(比如PC端的“favicon”图标和移动设备上用以显示在主屏幕的图标) 。

{{EmbedInteractiveExample("pages/tabbed/link.html")}}

要链接一个外部的样式表,你需要像这样在你的{{HTMLElement("head")}}中包含一个{{HTMLElement("link")}}元素:

<link href="main.css" rel="stylesheet">

在这个简单的例子中,使用了 href 属性设置外部资源的路径,并设置 rel 属性的值为“stylesheet”(样式表)。rel 表示“关系 (relationship) ”,它可能是<link>元素其中一个关键的特性——属性值表示<link>项的链接方式与包含它的文档之间的关系。你将在我们的链接类型中看到很多不同类型的关系。

这里有一些你经常遇到的其它类型。例如,这里是一个网站图标的链接:

<link rel="icon" href="favicon.ico">

还有一些其它的与图标相关的rel值,主要用于表示不同移动平台上特殊的图标类型,例如:

<link rel="apple-touch-icon-precomposed" sizes="114x114"
      href="apple-icon-114.png" type="image/png">

sizes属性表示图标大小,type属性包含了链接资源的MIME类型。这些属性为浏览器选择最合适的图标提供了有用的提示。

你也可以提供一个媒体类型,或者在media属性内部进行查询;这种资源将只在满足媒体条件的情况下才被加载进来。例如:

<link href="print.css" rel="stylesheet" media="print">
<link href="mobile.css" rel="stylesheet" media="screen and (max-width: 600px)">

<link>也加入了一些新的有意思的性能和安全特性。举例如下:

<link rel="preload" href="myFont.woff2" as="font"
      type="font/woff2" crossorigin="anonymous">

rel设定为preload,表示浏览器应该预加载该资源 (更多细节见使用rel="preload"预加载内容) 。as属性表示获取特定的内容类。crossorigin属性表示该资源是否应该使用一个{{Glossary("CORS")}}请求来获取。

其它用法的注解:

属性

这个元素可以使用 全局属性.

{{htmlattrdef("as")}}
该属性仅在<link>元素设置了 rel="preload" 时才能使用。它规定了<link>元素加载的内容的类型,对于内容的优先级、请求匹配、正确的内容安全策略的选择以及正确的 {{httpheader("Accept")}}请求头的设置,这个属性是必需的。
应用于
audio <audio> 元素
document <iframe> 和 <frame> 元素
embed <embed> 元素
fetch

fetch, XHR

This value also requires <link> to contain the crossorigin attribute.

font CSS @font-face
image <img> and <picture> elements with srcset or imageset attributes, SVG <image> elements, CSS *-image rules
object <object> elements
script <script> elements, Worker importScripts
style <link rel=stylesheet> elements, CSS @import
track <track> elements
video <video> elements
worker Worker, SharedWorker
{{htmlattrdef("crossorigin")}}
此枚举属性指定在加载相关资源时是否必须使用 CORS. 启用 CORS 的图片 可以在 {{HTMLElement("canvas")}} 元素中重复使用, 并避免其被污染. 可取的值如下:
"anonymous"
会发起一个跨域请求(即包含 Origin: HTTP 头). 但不会发送任何认证信息 (即不发送 cookie, X.509 证书和 HTTP 基本认证信息). 如果服务器没有给出源站凭证 (不设置 Access-Control-Allow-Origin: HTTP 头), 资源就会被污染并限制使用.
"use-credentials"
会发起一个带有认证信息 (发送 cookie, X.509 证书和 HTTP 基本认证信息) 的跨域请求 (即包含 Origin: HTTP 头). 如果服务器没有给出源站凭证 (不设置 Access-Control-Allow-Origin: HTTP 头), 资源就会被污染并限制使用.
当不设置此属性时, 资源将会不使用 CORS 加载 (即不发送 Origin: HTTP 头), 这将阻止其在 {{HTMLElement('canvas')}} 元素中进行使用. 若设置了非法的值, 则视为使用 anonymous. 前往 CORS settings attributes 获取更多信息.
{{htmlattrdef("disabled")}}

仅对于rel="stylesheet" ,disabled 的Boolean属性指示是否应加载所描述的样式表并将其应用于文档。 如果在加载HTML时在HTML中指定了Disabled,则在页面加载期间不会加载样式表。 相反,如果禁用属性更改为false或删除时,样式表将按需加载。

但是,一旦加载样式表,对Disabled属性的值所做的更改将不再与{{domxref("StyleSheet.disabled")}} 属性的值有任何关系。 相反,更改此属性的值只是启用和禁用应用于文档的样式表表单。

这与StyleSheet的disable属性不同; 将其更改为true会将样式表从文档的{{domxref("document.styleSheets")}} 列表中删除,并且在切换回false时不会自动重新加载样式表。

{{htmlattrdef("href")}}
此属性指定被链接资源的{{glossary("URL")}}。 URL 可以是绝对的,也可以是相对的。
{{htmlattrdef("hreflang")}}
此属性指明了被链接资源的语言. 其意义仅供参考。可取的值参见 BCP47。仅当设置了 {{htmlattrxref("href", "a")}} 属性时才应设置该属性。
{{HTMLAttrDef("importance")}} {{Experimental_Inline}}
指示资源的相对重要性。 优先级提示使用以下值委托:

auto: 表示没有偏好。 浏览器可以使用其自己的启发式方法来确定资源的优先级。

high: 向浏览器指示资源具有高优先级。

low: 向浏览器指示资源的优先级较低。

Note: 只有存在rel=“preload”或rel=“prefetch”时,importance属性才能用于<link>元素。

{{htmlattrdef("integrity")}} {{experimental_inline}}
包含行内元数据,它是一个你用浏览器获取的资源文件的哈希值,以base64编码的方式加的密,这样用户能用它来验证一个获取到的资源,在传送时未被非法篡改,详情查看Subresource Integrity
{{htmlattrdef("media")}}
这个属性规定了外部资源适用的媒体类型。它的值必须是"媒体查询"。这个属性使得用户代理能选择最适合设备运行的媒体类型。
使用注意:
  • 在HTML 4中,该属性只能是一组以空白符作为分隔的媒体描述文字,比如"媒体类型"规定了该元素可取的属性,如print、screen、aural、braille。HTML5将该属性值扩展为任意类型的"媒体查询","媒体查询"将HTML4的属性值都包括在内。
  • 不支持"CSS3 媒体查询"的浏览器并不会强行识别这些链接,因此别忘了设置备用link,即那些可用于HTML4的link。
{{htmlattrdef("referrerpolicy")}} {{experimental_inline}}
一个字符串,指示在获取资源时使用哪个引荐来源网址:
{{htmlattrdef("rel")}}
此属性命名链接文档与当前文档的关系。 该属性必须是链接类型值的用空格分隔的列表。
{{htmlattrdef("sizes")}}
这个属性定义了包含相应资源的可视化媒体中的icons的大小。它只有在{{htmlattrxref("rel","link")}}包含icon的link类型值。它可能有如下的规则。
用法注意:
  • 大多数的icon格式只能存储一个icon。因此绝大多数使用 {{htmlattrxref("sizes")}}时只包含一个值。微软的ICO格式和苹果的ICNS格式都是这样,ICO使用得更加广泛,推荐你使用它。
  • 苹果的IOS系统并不支持这个属性,于是苹果的IPhone以及IPad使用特殊的、非标准的 link类型值去定义作为Web Clip或开始占位符:apple-touch-icon 和 apple-touch-startup-icon。
{{HTMLAttrDef("title")}}
属性在<link>元素上有特殊的语义。当用于<link rel="stylesheet">时,它定义了一个首选样式表或备用样式表。不正确地使用它可能会导致样式表被忽略
{{htmlattrdef("type")}}
这个属性被用于定义链接的内容的类型。这个属性的值应该是像text/html,text/css等MIME类型。这个属性常用的用法是定义链接的样式表,最常用的值是表明了CSS的text/css。

非标准属性

{{HTMLAttrDef("methods")}} {{Non-standard_Inline}}
此属性的值提供有关可能在对象上执行的功能的信息。 这些值通常在使用时由HTTP协议给出,但是(出于与“title”属性类似的原因)将其预先包含在链接中可能是有用的。 例如,浏览器可能根据指定的方法选择不同的链接呈现方式。 可搜索的内容可能会得到其他图标,或者外部链接可能会显示离开当前站点的指示。 即使定义的浏览器Internet Explorer 4也无法很好地理解或支持此属性。
{{HTMLAttrDef("prefetch")}} {{Non-standard_Inline}} {{secureContext_inline}}
此属性标识下一个导航可能需要的资源,用户代理应检索该资源。 这允许用户代理在将来请求资源时更快地做出响应。
{{HTMLAttrDef("target")}} {{Non-standard_Inline}}
定义具有已定义链接关系或将显示任何链接资源的呈现的框架或窗口名称。

已淘汰的属性

{{htmlattrdef("charset")}}{{obsolete_inline}}
此属性定义链接资源的字符编码。 该值为{{rfc(2045)}}中定义的字符集的空格和/或逗号分隔列表。 缺省值为iso-8859-1。

使用说明:该属性已淘汰且禁止使用。要实现相同效果,可在外链资源中使用Content-Type HTTP header。

{{htmlattrdef("rev")}}{{obsolete_inline}}
此属性的值显示了 {{HTMLAttrxRef("href", "link")}} 属性所定义的当前文档与链接文档的关系。 因此,该属性定义了与rel属性的值相比的反向关系。 该属性的Link type value类似于{{HTMLAttrxRef("rel", "link")}}的可能值。

Note: WHATWG HTML生活标准(MDN将其视为规范的规范)认为该属性已过时。 但是,值得注意的是,rev在W3C规范中并未过时。 就是说,鉴于不确定性,依靠rev是不明智的。

相反,您应该使用具有相反链接类型值的{{HTMLAttrxRef("rel", "link")}}属性。 例如,要建立反向链接,请指定作者。 而且,即使许多站点都以这种方式滥用此属性,该属性也不代表“修订”,并且不得与版本号一起使用。

示例

引入一个css文件

用下面的语法来引入一个css文件:

<link href="style.css" rel="stylesheet">

提供可替换的样式表

你也可以指定"可替换的外部样式表"。

用户可以在浏览器菜单 "查看>页面样式" 来选择网页的样式。通过这一办法,可以用多种样式浏览网页。

<link href="default.css" rel="stylesheet" title="Default Style">
<link href="fancy.css" rel="alternate stylesheet" title="Fancy">
<link href="basic.css" rel="alternate stylesheet" title="Basic">

提供用于不同用法上下文的图标

您可以在同一页面上包含指向多个不同图标的链接,浏览器将使用relsizes 值作为提示来选择最适合其特定上下文的图标。

<!-- third-generation iPad with high-resolution Retina display: -->
<link rel="apple-touch-icon-precomposed" sizes="144x144" href="favicon144.png">
<!-- iPhone with high-resolution Retina display: -->
<link rel="apple-touch-icon-precomposed" sizes="114x114" href="favicon114.png">
<!-- first- and second-generation iPad: -->
<link rel="apple-touch-icon-precomposed" sizes="72x72" href="favicon72.png">
<!-- non-Retina iPhone, iPod Touch, and Android 2.1+ devices: -->
<link rel="apple-touch-icon-precomposed" href="favicon57.png">
<!-- basic favicon -->
<link rel="icon" href="favicon32.png">

通过媒体查询有条件地加载资源

您可以在media属性中提供媒体类型或查询; 然后,只有在媒体条件为true时,才会加载此资源。 例如:

<link href="print.css" rel="stylesheet" media="print">
<link href="mobile.css" rel="stylesheet" media="all">
<link href="desktop.css" rel="stylesheet" media="screen and (min-width: 600px)">
<link href="highres.css" rel="stylesheet" media="screen and (min-resolution: 300dpi)">

样式表加载事件

你能够通过监听发生在样式表上的事件知道什么时候样式表加载完毕。同样的,你能够通过监听error事件检测到是否在加载样式表的过程中出现错误。

<script>
function sheetLoaded() {
  // Do something interesting; the sheet has been loaded
}

function sheetError() {
  alert("An error occurred loading the stylesheet!");
}
</script>

<link rel="stylesheet" href="mystylesheet.css" onload="sheetLoaded()" onerror="sheetError()">
注意: 当样式表以及它引用的部分全部加载完毕,load事件就会在样式表应用到内容之前立即触发。

预加载例子

你可以在Preloading content with rel="preload"找到<link rel="preload">的详细例子。

概要

内容类型 元数据。如果使用了 itemprop 属性, 则为 flow content 和 phrasing content.
允许的元素内容 无,这是一个{{Glossary("空元素")}}。
标签省略 鉴于这是一个空元素,开始标签必须存在,结束标签必须不存在。
允许的父元素 任何可以接受元数据的元素.。如果使用了 itemprop属性,,则其父元素可以是任何可接受 phrasing content 的元素。
允许的 ARIA roles
DOM接口 {{domxref("HTMLLinkElement")}}

注意

标准规范

Specification Status Comment
{{SpecName("HTML WHATWG", "semantics.html#the-link-element", "<link>")}} {{Spec2("HTML WHATWG")}} No changes from latest snapshot
{{SpecName("HTML5 W3C", "document-metadata.html#the-link-element", "<link>")}} {{Spec2("HTML5 W3C")}} Added crossorigin and sizes attributes; extended values of media to any media queries; added numerous new values for rel.
{{SpecName("HTML4.01", "struct/links.html#h-12.3", "<link>")}} {{Spec2('HTML4.01')}}

浏览器兼容性

{{Compat("html.elements.link", 3)}}

请参阅