<link>: 외부 리소스 연결 요소

번역이 완료되지 않았습니다. Please help translate this article from English

HTML <link> 요소는 현재 문서와 외부 리소스의 관계를 명시합니다. <link>스타일 시트를 연결할 때 제일 많이 사용하지만, 사이트 아이콘("파비콘"과 홈 화면 아이콘) 연결 등 여러가지로 쓰일 수 있습니다.

외부 스타일 시트를 연결하려면 <head> 안에 다음과 같은 <link> 요소를 배치하세요.

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

위의 간단한 예제는 href 특성에 스타일 시트의 경로를, rel 특성에 stylesheet을 사용합니다. rel은 관계(relationship)를 뜻하며, 현재 문서와 연결한 아이템의 관계가 어떻게 되는지 설명합니다. 따라서 <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">

relpreload 값은 브라우저가 이 리소스를 미리 불러와야 한다는 것(자세한 정보는 이 문서를 참고하세요)을 나타내고, as 특성은 가져오는 리소스가 어떤 리소스인지 나타냅니다. crossorigin 특성은 리소스를 CORS 요청으로 불러와야 하는지에 대한 값입니다.

특성

이 요소는 전역 특성을 포함합니다

as
<link> 요소에 rel="preload" 또는 rel="prefetch" 특성을 지정했을 때만 사용합니다. as 특성은 <link> 요소가 불러오는 콘텐츠의 유형을 지정합니다. 요청 매칭, 올바른 콘텐츠 보안 정책의 적용, 올바른 Accept 요청 헤더 적용에 필요합니다. 이에 더해, rel="preload"as 특성을 사용해 요청 우선순위를 매깁니다. 다음 표는 특성의 유효한 값과, 해당 값이 적용되는 요소 또는 리소스를 나열합니다.
적용 대상
audio <audio> 요소
document <iframe><frame> 요소
embed <embed> 요소
fetch

fetch, XHR

fetch 값은 <link> 요소에 crossorigin 특성도 요구합니다.

font CSS @font-face
image srcset 또는 imageset 특성을 가진 <img><picture> 요소, SVG <image> 요소, CSS *-image 규칙
object <object> 요소
script <script> 요소, 워커 importScripts
style <link rel=stylesheet> 요소, CSS @import
track <track> 요소
video <video> 요소
worker 워커, 공유 워커
crossorigin
리소스를 가져올 때 CORS를 사용해야 하는지 나타내는 열거형 특성입니다. CORS 활성화 이미지<canvas> 요소를 "오염"(taint)시키지 않고 재사용할 수 있습니다. 가능한 값은 다음과 같습니다.
anonymous
교차 출처 요청(Origin HTTP 헤더를 가진 요청)을 수행하지만 인증 정보, 즉 쿠키, X.509 인증서, HTTP Basic 인증 중 어떠한 것도 전송하지 않습니다. 서버에서 Access-Control-Allow-Origin HTTP 헤더를 설정하지 않아서 출처 사이트에 인증 정보를 전달하지 않으면 리소스가 오염되어 사용처가 제한됩니다.
use-credentials
교차 출처 요청(Origin HTTP 헤더를 가진 요청)을 수행하면서 인증 정보, 즉 쿠키, X.509 인증서, HTTP Basic 인증 중 한 가지 이상을 수행합니다. 서버에서 Access-Control-Allow-Origin HTTP 헤더를 설정하지 않아서 출처 사이트에 인증 정보를 전달하지 않으면 리소스가 오염되어 사용처가 제한됩니다.
crossorigin 특성이 존재하지 않으면 리소스를 CORS 요청 없이 가져오므로 리소스의 오염 없이는 사용이 불가능합니다. 유효하지 않은 값은 anonymous를 지정한 것으로 간주합니다. CORS 설정 특성 문서에서 더 자세한 정보를 알아보세요.
disabled

rel="stylesheet"에 한정하여, disabled 불리언 특성은 스타일시트를 불러와서 문서에 적용할지 나타냅니다. HTML을 불러오는 시점에 disabled를 지정한 경우 스타일시트는 페이지 로딩 시점에 불러오지 않습니다. 이후에 disabled 특성이 false로 바뀌거나 아예 제거될 때는 불러옵니다.

DOM에서 disabled 속성을 지정하면 문서의 document.styleSheets 리스트에서 스타일시트를 제거합니다.

href
연결할 리소스의 URL입니다. 절대와 상대 URL 모두 가능합니다.
hreflang
연결할 리소스가 사용하는 언어입니다. 오직 제안하는 용도로만 사용합니다. 가능한 값은 BCP47에 따릅니다. href 특성이 존재할 때만 사용하세요.
importance
리소스의 상대적인 중요도입니다. 가능한 값은 다음과 같습니다.

auto: 설정 안함. 브라우저가 자체 휴리스틱을 사용해 리소스의 우선순위를 결정합니다.

high: 브라우저에게 리소스가 높은 우선순위를 지님을 알려줍니다.

low: 브라우저에게 리소스가 낮은 우선순위를 지님을 알려줍니다.

참고: importance 특성은 <link> 요소가 rel="preload" 또는 rel="prefetch"를 가지고 있어야 사용할 수 있습니다.

integrity
Contains inline metadata — a base64-encoded cryptographic hash of the resource (file) you’re telling the browser to fetch. The browser can use this to verify that the fetched resource has been delivered free of unexpected manipulation. See Subresource Integrity.
media
연결된 리소스를 적용할 미디어를 명시합니다. 값으로는 반드시 미디어 유형이나 미디어 쿼리를 사용해야 합니다. media 특성은 사용자 에이전트가 현재 장치에 맞춰 최적의 스타일시트를 선택하도록 할 수 있으므로 주로 외부 스타일시트를 연결할 때 유용합니다.
참고:
  • HTML 4에서는 이 특성의 값으로 사용할 수 있는print, screen, aural, braille등과 같은 값을 공백으로 구분한 미디어 설명 문자열 목록, 예를 들어, 미디어 유형 및 그룹(media types and groups)일 수 있습니다.HTML5에서는 이를 확장하여 HTML 4에서 허용되는 값 외에 어떤 유형의media queries든 사용할 수 있습니다.
  • CSS3 Media Queries를 지원하지 않는 브라우저는 이를 타당한 링크로 인식하지 않을 수 있으므로HTML 4에 정의되어 있는제한된 media query의 집합을 이용한 폴백(fallback) 링크를 설정하는 것을 잊지 말기바랍니다.
referrerpolicy
A string indicating which referrer to use when fetching the resource:
  • no-referrer means that the Referer header will not be sent.
  • no-referrer-when-downgrade means that no Referer header will be sent when navigating to an origin without TLS (HTTPS). This is a user agent’s default behavior, if no policy is otherwise specified.
  • origin means that the referrer will be the origin of the page, which is roughly the scheme, the host, and the port.
  • origin-when-cross-origin means that navigating to other origins will be limited to the scheme, the host, and the port, while navigating on the same origin will include the referrer's path.
  • unsafe-url means that the referrer will include the origin and the path (but not the fragment, password, or username). This case is unsafe because it can leak origins and paths from TLS-protected resources to insecure origins.
rel
연결할 리소스와 현재 문서의 관계. 링크 유형의 값을 공백으로 구분한 리스트를 지정해야 합니다.
sizes
This attribute defines the sizes of the icons for visual media contained in the resource. It must be present only if the rel contains a value of icon or a non-standard type such as Apple's apple-touch-icon. It may have the following values:
  • any, meaning that the icon can be scaled to any size as it is in a vector format, like image/svg+xml.
  • a white-space separated list of sizes, each in the format <width in pixels>x<height in pixels> or <width in pixels>X<height in pixels>. Each of these sizes must be contained in the resource.

Note: Most icon formats are only able to store one single icon; therefore most of the time the sizes attribute contains only one entry. MS's ICO format does, as well as Apple's ICNS. ICO is more ubiquitous, so you should use this format if cross-browser support is a concern (especially for old IE versions).

title
The title attribute has special semantics on the <link> element. When used on a <link rel="stylesheet"> it defines a preferred or an alternate stylesheet. Incorrectly using it may cause the stylesheet to be ignored.
type
이 특성은 링크된 콘텐츠의 타입을 정의하는데 사용됩니다. 특성의 값은 text/html, text/css와 같은 MIME 타입이여야합니다. 이 특성은 링크된 스타일시트의 타입을 지정하는데 쓰이는것이 보통이며, text/css 값이 가장 흔합니다.

비표준 특성

methods
The value of this attribute provides information about the functions that might be performed on an object. The values generally are given by the HTTP protocol when it is used, but it might (for similar reasons as for the title attribute) be useful to include advisory information in advance in the link. For example, the browser might choose a different rendering of a link as a function of the methods specified; something that is searchable might get a different icon, or an outside link might render with an indication of leaving the current site. This attribute is not well understood nor supported, even by the defining browser, Internet Explorer 4.
prefetch Secure context
This attribute identifies a resource that might be required by the next navigation and that the user agent should retrieve it. This allows the user agent to respond faster when the resource is requested in the future.
target
Defines the frame or window name that has the defined linking relationship or that will show the rendering of any linked resource.

예제

스타일 시트 포함하기

페이지에 스타일 시트를 포함하려면 다음 구문을 사용하세요.

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

대체 스타일시트 제공하기

대체 스타일시트를 제공할 수도 있습니다.

유저는 View>Page Style 메뉴에서 사용할 스타일시트를 고를수 있습니다. 이것은 유저가 페이지를 여러 버전으로 볼수 있는 방법을 제공합니다.

<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">

Providing icons for different usage contexts

You can include links to several different icons on the same page, and the browser will choose which one works best for its particular context using the rel and sizes values as hints.

<!-- 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">

스타일 시트 load 이벤트

당신은 load 이벤트를 통해 스타일시트가 언제 로드되는지 확인할수 있습니다. 비슷한 방법으로, 당신은 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()">
참고: The load event fires once the stylesheet and all of its imported content has been loaded and parsed, and immediately before the styles start being applied to the content.

기술 요약

콘텐츠 카테고리 메타데이터 콘텐츠. itemprop이 존재하면 플로우 콘텐츠구문 콘텐츠.
가능한 콘텐츠 없음. 빈 요소입니다.
태그 생략 여는 태그는 필수입니다. 닫는 태그는 존재해선 안됩니다.
가능한 부모 요소 메타데이터 콘텐츠를 허용하는 모든 요소. itemprop이 존재하면 구문 콘텐츠를 허용하는 모든 요소.
가능한 ARIA 역할 없음
DOM 인터페이스 HTMLLinkElement

명세

명세 상태 주석
HTML Living Standard
The definition of '<link>' in that specification.
Living Standard No changes from latest snapshot
HTML5
The definition of '<link>' in that specification.
Recommendation Added crossorigin and sizes attributes; extended values of media to any media queries; added numerous new values for rel.
HTML 4.01 Specification
The definition of '<link>' in that specification.
Recommendation

브라우저 호환성

같이 보기