--- title: :外部资源链接元素 slug: Web/HTML/Element/link tags: - HTML - Web - 元数据 - 元素 - 参考 translation_of: Web/HTML/Element/link ---
HTML外部资源链接元素 (<link>
) 规定了当前文档与外部资源的关系。该元素最常用于链接样式表,此外也可以被用来创建站点图标(比如PC端的“favicon”图标和移动设备上用以显示在主屏幕的图标) 。
要链接一个外部的样式表,你需要像这样在你的{{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")}}请求来获取。
其它用法的注解:
<link>
元素可以出现在{{HTMLElement("head")}}元素或者{{HTMLElement("body")}}元素中,具体取决于它是否有一个body-ok的链接类型。例如,stylesheet
链接类型是body-ok的,因此<link rel="stylesheet">
允许出现在body中。然而,这不是一种好的可遵循的实践方式;更合理的方式是,将你的<link>
元素从你的body内容中分离出来,将其放在<head>
中。<link>
为网站创建一个favicon时,你的网站使用内容安全策略 (Content Security Policy,CSP) 来增强它的安全性,这种策略适用于favicon。如果你遇到favicon未加载的问题,验证{{HTTPHeader("Content-Security-Policy")}}头的img-src
directive没有在阻止对它的访问。<link>
元素定义了一些事件处理器 (event handler) ,但是对于它们的使用方法不明确。<link>
的空元素需要一个尾斜杠:<link />
。rel
使用next
值,用于在一个document series中预加载下一页。这个元素可以使用 全局属性.
<link>
元素设置了 rel="preload"
时才能使用。它规定了<link>元素
加载的内容的类型,对于内容的优先级、请求匹配、正确的内容安全策略的选择以及正确的 {{httpheader("Accept")}}请求头的设置,这个属性是必需的。值 | 应用于 |
---|---|
audio | <audio> 元素 |
document | <iframe> 和 <frame> 元素 |
embed | <embed> 元素 |
fetch |
fetch, XHR This value also requires |
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 |
"anonymous"
Origin:
HTTP 头). 但不会发送任何认证信息 (即不发送 cookie, X.509 证书和 HTTP 基本认证信息). 如果服务器没有给出源站凭证 (不设置 Access-Control-Allow-Origin:
HTTP 头), 资源就会被污染并限制使用."use-credentials"
Origin:
HTTP 头). 如果服务器没有给出源站凭证 (不设置 Access-Control-Allow-Origin:
HTTP 头), 资源就会被污染并限制使用.Origin:
HTTP 头), 这将阻止其在 {{HTMLElement('canvas')}} 元素中进行使用. 若设置了非法的值, 则视为使用 anonymous. 前往 CORS settings attributes 获取更多信息.仅对于rel="stylesheet"
,disabled
的Boolean属性指示是否应加载所描述的样式表并将其应用于文档。 如果在加载HTML时在HTML中指定了Disabled,则在页面加载期间不会加载样式表。 相反,如果禁用属性更改为false或删除时,样式表将按需加载。
但是,一旦加载样式表,对Disabled属性的值所做的更改将不再与{{domxref("StyleSheet.disabled")}} 属性的值有任何关系。 相反,更改此属性的值只是启用和禁用应用于文档的样式表表单。
这与StyleSheet的disable属性不同; 将其更改为true会将样式表从文档的{{domxref("document.styleSheets")}} 列表中删除,并且在切换回false时不会自动重新加载样式表。
auto
: 表示没有偏好。 浏览器可以使用其自己的启发式方法来确定资源的优先级。
high
: 向浏览器指示资源具有高优先级。
low
: 向浏览器指示资源的优先级较低。
Note: 只有存在rel=“preload”或rel=“prefetch”时,importance属性才能用于<link>元素。
'no-referrer'
表示{{HTTPHeader("Referer")}} 标头将不会发送。'no-referrer-when-downgrade'
的原始位置时不会发送任何{{HTTPHeader("Referer")}}标头。 如果未指定其他政策,这是用户代理的默认行为。'origin'
意味着引荐来源网址将是页面的来源,大致是方案,主机和端口。'origin-when-cross-origin'
这意味着导航到其他来源将仅限于方案,主机和端口,而在同一来源上导航将包括引荐来源网址的路径。'unsafe-url'
意味着引荐来源网址将包含来源和路径(但不包括片段,密码或用户名)。 这种情况是不安全的,因为它可能会将来源和路径从受TLS保护的资源泄漏到不安全的来源。any
表示图标可以按矢量格式缩放到任意大小,例如image/svg+xml。
<width in pixels>x<height in pixels>
或 <width in pixels>X<height in pixels>给出。
尺寸列表中的每一个尺寸都必须包含在资源里。apple-touch-icon
和 apple-touch-startup-icon。
<link>
元素上有特殊的语义。当用于<link rel="stylesheet">
时,它定义了一个首选样式表或备用样式表。不正确地使用它可能会导致样式表被忽略。使用说明:该属性已淘汰且禁止使用。要实现相同效果,可在外链资源中使用Content-Type
HTTP header。
Note: WHATWG HTML生活标准(MDN将其视为规范的规范)认为该属性已过时。 但是,值得注意的是,rev在W3C规范中并未过时。 就是说,鉴于不确定性,依靠rev是不明智的。
相反,您应该使用具有相反链接类型值的{{HTMLAttrxRef("rel", "link")}}属性。 例如,要建立反向链接,请指定作者。 而且,即使许多站点都以这种方式滥用此属性,该属性也不代表“修订”,并且不得与版本号一起使用。
用下面的语法来引入一个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">
您可以在同一页面上包含指向多个不同图标的链接,浏览器将使用rel
和sizes
值作为提示来选择最适合其特定上下文的图标。
<!-- 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()">
你可以在Preloading content with rel="preload"找到<link rel="preload">
的详细例子。
内容类型 | 元数据。如果使用了 itemprop 属性, 则为 flow content 和 phrasing content. |
---|---|
允许的元素内容 | 无,这是一个{{Glossary("空元素")}}。 |
标签省略 | 鉴于这是一个空元素,开始标签必须存在,结束标签必须不存在。 |
允许的父元素 | 任何可以接受元数据的元素.。如果使用了 itemprop属性,,则其父元素可以是任何可接受 phrasing content 的元素。 |
允许的 ARIA roles | 无 |
DOM接口 | {{domxref("HTMLLinkElement")}} |
<link>
标签只能出现在head元素中,然而可以出现多个<link>标签。
|
||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|