Spec-Zone.ru › HTML

<link>: Элемент ссылки на внешний ресурс

Элемент <link> HTML задаёт взаимосвязь между текущим документом и внешним ресурсом. Этот элемент чаще всего используется для подключения таблиц стилей, но также используется для определения иконок сайта (как иконок типа «favicon», так и иконок для домашнего экрана и приложений на мобильных устройствах) и других целей.

Попробуйте

Для подключения внешней таблицы стилей, необходимо включить элемент <link> в свой <head>, как показано ниже:

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

В этом простом примере путь к таблице стилей указан в атрибуте href, а атрибут rel имеет значение stylesheet. rel означает «взаимосвязь», и это одна из ключевых особенностей элемента <link> — значение определяет, как связанный элемент относится к документу.

Существуют и другие распространённые типы. Например, ссылка на значок favicon сайта:

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

Существует ряд других значений атрибута rel, в основном используемых для обозначения специальных типов значков для различных мобильных платформ, например:

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

Атрибут sizes указывает размер значка, а type содержит MIME-тип связанного ресурса. Это даёт браузеру полезные подсказки для выбора наиболее подходящей доступной иконки.

Вы также можете указать тип медиа или запрос внутри атрибута media; этот ресурс будет загружен только в том случае, если условие медиа выполняется. Например:

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

В элемент <link> также были добавлены некоторые интересные новые возможности по производительности и безопасности. Рассмотрим этот пример:

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

Значение rel — preload указывает браузеру на предварительную загрузку этого ресурса (см. rel="preload" для получения более подробной информации), а атрибут as указывает конкретный тип загружаемого контента. Атрибут crossorigin указывает, должен ли ресурс загружаться с запросом CORS.

Другие рекомендации по использованию:

  • Элемент <link> может встречаться как в элементе <head>, так и в элементе <body>, в зависимости от того, имеет ли он тип ссылки, который является body-ok. Например, тип ссылки stylesheet является body-ok, и, следовательно, <link rel="stylesheet"> разрешён в теле. Однако, этого не рекомендуется делать; целесообразнее отделять элементы <link> от содержимого тела, размещая их в <head>.
  • При использовании <link> для определения favicon сайта, и если сайт использует политику безопасности содержимого (CSP) для повышения безопасности, политика применяется к favicon. Если у вас возникли проблемы с загрузкой favicon, проверьте, не блокирует ли заголовок Content-Security-Policy доступ к нему с помощью img-src директивы.
  • Спецификации HTML и XHTML определяют обработчики событий для элемента <link>, но неясно, как они будут использоваться.
  • В XHTML 1.0, элементы без содержимого, такие как <link>, требуют завершающего слэша: <link />.
  • WebTV поддерживает использование значения next для rel для предварительной загрузки следующей страницы в серии документов.

Атрибуты

Этот элемент включает глобальные атрибуты.

as

Этот атрибут обязателен, когда rel="preload" установлен для элемента <link>, необязателен, когда установлен rel="modulepreload", и в противном случае не должен использоваться. Он определяет тип загружаемого содержимого <link>, что необходимо для сопоставления запросов, применения правильной политики безопасности содержимого и установки правильного заголовка запроса Accept.

Кроме того, rel="preload" использует его как сигнал для приоритетизации запросов. В таблице ниже перечислены допустимые значения этого атрибута и соответствующие элементы или ресурсы.

Значение Применяется к
audio <audio> элементы
document <iframe> и <frame> элементы
embed <embed> элементы
fetch

fetch, XHR

Примечание: Это значение также требует, чтобы <link> содержал атрибут crossorigin, см. CORS-активированные запросы fetch.

font

CSS @font-face

Примечание: Это значение также требует, чтобы <link> содержал атрибут crossorigin, см. CORS-активированные запросы fetch.

image <img> и <picture> элементы со srcset или imageset атрибутами, SVG <image> элементы, CSS *-image правила
object <object> элементы
script <script> элементы, Worker importScripts
style <link rel=stylesheet> элементы, CSS @import
track <track> элементы
video <video> элементы
worker Worker, SharedWorker
blocking Экспериментальный

Этот атрибут явно указывает, что определенные операции должны быть заблокированы при загрузке внешнего ресурса. Он должен использоваться только тогда, когда атрибут rel содержит ключевые слова expect или stylesheet. Операции, которые должны быть заблокированы, должны быть перечислены в виде разделителя пробелов ниже.

  • render: Отображение содержимого на экране заблокировано.
crossorigin

Этот перечисляемый атрибут указывает, нужно ли использовать CORS при загрузке ресурса. CORS-активированные изображения можно повторно использовать в элементе <canvas> без повреждения. Допустимые значения:

anonymous

Выполняется междоменный запрос (т. е. с заголовком HTTP Origin), но никаких данных не отправляется (т. е. без cookie, сертификата X.509 или аутентификации HTTP Basic). Если сервер не предоставляет данные для сайта-источника (не задав заголовок HTTP Access-Control-Allow-Origin), ресурс будет поврежден и его использование ограничено.

use-credentials

Выполняется междоменный запрос (т. е. с заголовком HTTP Origin) вместе с отправкой данных (т. е. отправляются cookie, сертификат и/или выполняется аутентификация HTTP Basic). Если сервер не предоставляет данные для сайта-источника (через заголовок HTTP Access-Control-Allow-Credentials), ресурс будет поврежден и его использование ограничено.

Если атрибут отсутствует, ресурс загружается без запроса CORS (т. е. без отправки заголовка HTTP Origin), что предотвращает его использование без повреждения. Если значение некорректно, оно обрабатывается так, как если бы использовалось перечисляемое ключевое слово anonymous. Дополнительная информация см. в разделе Атрибуты настроек CORS.

disabled

Только для rel="stylesheet", атрибут disabled (булево) указывает, должна ли описываемая таблицы стилей загружаться и применяться к документу. Если disabled указано в HTML при загрузке, таблица стилей не будет загружена во время загрузки страницы. Вместо этого таблица стилей будет загружена по требованию, если и когда атрибут disabled изменится на false или будет удален.

Установка свойства disabled в DOM приводит к удалению таблицы стилей из списка Document.styleSheets документа.

fetchpriority

Представляет подсказку о приоритете при загрузке предварительно загруженного ресурса. Допустимые значения:

high

Указывает на загрузку высокого приоритета по отношению к другим ресурсам того же типа.

low

Указывает на загрузку низкого приоритета по отношению к другим ресурсам того же типа.

auto

По умолчанию: указывает на автоматическое определение приоритета загрузки по отношению к другим ресурсам того же типа.

href

Этот атрибут указывает URL связанного ресурса. URL может быть абсолютным или относительным.

hreflang

Этот атрибут указывает язык связанного ресурса. Он является чисто рекомендательным. Допустимые значения указаны в RFC 5646: Теги для идентификации языков (также известны как BCP 47). Используйте этот атрибут только если присутствует атрибут href.

imagesizes

Только для rel="preload" и as="image", атрибут imagesizes — атрибут sizes, который указывает на предварительную загрузку соответствующего ресурса, используемого элементом img с соответствующими значениями для его атрибутов srcset и sizes.

imagesrcset

Только для rel="preload" и as="image", атрибут imagesrcset — атрибут sourceset, который указывает на предварительную загрузку соответствующего ресурса, используемого элементом img с соответствующими значениями для его атрибутов srcset и sizes.

integrity

Содержит встроенные метаданные — кодированный в base64 криптографический хэш ресурса (файла), который вы говорите браузеру загрузить. Браузер может использовать его для проверки того, что загруженный ресурс был доставлен без непредвиденных изменений. Атрибут должен быть указан только если атрибут rel указан со значениями stylesheet, preload, или modulepreload. См. Subresource Integrity.

media

Этот атрибут указывает среду, к которой относится связанный ресурс. Его значение должно быть типом среды / запрос на среду. Этот атрибут в основном полезен при ссылке на внешние таблицы стилей — он позволяет агенту пользователя выбрать наиболее подходящую для устройства, на котором он работает.

referrerpolicy

Строка, указывающая, какой использовать referrer при загрузке ресурса:

  • no-referrer означает, что заголовок Referer не будет отправлен.
  • no-referrer-when-downgrade означает, что заголовок Referer не будет отправлен при переходе к источнику без TLS (HTTPS). Это поведение по умолчанию агента пользователя, если не указано иное.
  • origin означает, что referrer будет источником страницы, что примерно соответствует схеме, хосту и порту.
  • origin-when-cross-origin означает, что переход к другим источникам будет ограничен схемой, хостом и портом, а переход к тому же источнику будет включать путь referrer.
  • unsafe-url означает, что referrer будет включать источник и путь (но не фрагмент, пароль или имя пользователя). Этот случай небезопасен, так как может выдать источники и пути из защищенных TLS ресурсов в незащищенные источники.
rel

Этот атрибут называет отношение связанного документа к текущему документу. Атрибут должен быть списком значений типа ссылки, разделенных пробелами.

sizes

Этот атрибут определяет размеры значков для визуальных медиафайлов, содержащихся в ресурсе. Он должен присутствовать только в том случае, если rel содержит значение icon или нестандартный тип, такой как Apple's apple-touch-icon. Он может иметь следующие значения:

  • any, что означает, что значок может быть масштабирован до любого размера, так как он находится в векторном формате, как image/svg+xml.
  • список размеров, разделённых пробелами, каждый в формате <width in pixels>x<height in pixels> или <width in pixels>X<height in pixels>. Каждый из этих размеров должен быть включён в ресурс.

Примечание: Большинство форматов значков могут хранить только один значок; поэтому в большинстве случаев атрибут sizes содержит только одну запись. Форматы ICO от Microsoft и ICNS от Apple могут хранить несколько размеров значков в одном файле. ICO имеет лучшую поддержку браузеров, поэтому вы должны использовать этот формат, если для вас важна кроссбраузерная поддержка.

title

Атрибут title имеет специальную семантику в элементе <link>. При использовании на элементе <link rel="stylesheet"> он определяет стандартный или альтернативный стиль.

type

Этот атрибут используется для определения типа связанного содержимого. Значение атрибута должно быть типом MIME, таким как text/html, text/css и так далее. Общее использование этого атрибута заключается в определении типа ссылаемого стиля (например, text/css), но учитывая, что CSS — единственный язык стилей, используемый в веб, не только можно опустить атрибут type, но это и рекомендуется. Также он используется в ссылках типа rel="preload" для того, чтобы убедиться, что браузер загружает только поддерживаемые типы файлов.

Нестандартные атрибуты

target Устаревший

Определяет имя фрейма или окна, имеющего заданную связь или отображающего результат любого связанного ресурса.

Устаревшие атрибуты

charset Устаревший

Этот атрибут определяет кодировку символов связанного ресурса. Значением является список кодировок символов, разделённых пробелами и/или запятыми, как определено в RFC 2045. Значение по умолчанию — iso-8859-1.

Примечание: Для достижения того же эффекта, что и этот устаревший атрибут, используйте HTTP-заголовок Content-Type для связанного ресурса.

rev Устаревший

Значение этого атрибута показывает взаимосвязь текущего документа с соединённым документом, как определено атрибутом href. Таким образом, атрибут определяет обратную связь по сравнению со значением атрибута rel. Значения типов ссылок для атрибута аналогичны возможным значениям для rel.

Примечание: Вместо rev, вы должны использовать атрибут rel с противоположным значением типа ссылки. Например, для установления обратной связи для made, укажите author. Также, этот атрибут не означает «ревизия» и не должен использоваться с номером версии, даже если многие сайты используют его таким образом.

Примеры

Включение таблицы стилей

Для включения таблицы стилей в страницу используйте следующий синтаксис:

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

Предоставление альтернативных таблиц стилей

Вы также можете указать альтернативные таблицы стилей.

Пользователь может выбрать используемую таблицу стилей, выбрав её из меню Вид > Стиль страницы. Это предоставляет возможность пользователям видеть несколько версий страницы.

html
<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 как подсказки.

html
<!-- iPad Pro with high-resolution Retina display: -->
<link
  rel="apple-touch-icon"
  sizes="167x167"
  href="/apple-touch-icon-167x167.png" />
<!-- 3x resolution iPhone: -->
<link
  rel="apple-touch-icon"
  sizes="180x180"
  href="/apple-touch-icon-180x180.png" />
<!-- non-Retina iPad, iPad mini, etc.: -->
<link
  rel="apple-touch-icon"
  sizes="152x152"
  href="/apple-touch-icon-152x152.png" />
<!-- 2x resolution iPhone and other devices: -->
<link rel="apple-touch-icon" href="/apple-touch-icon-120x120.png" />
<!-- basic favicon -->
<link rel="icon" href="/favicon.ico" />

Для получения информации о том, какой sizes выбрать для значков Apple, обратитесь к документации Apple по настройке веб-приложений и приведённым руководящим принципам Apple по интерфейсу пользователя. Обычно достаточно предоставить большое изображение, например, 192x192, и позволить браузеру масштабировать его по мере необходимости, но вы можете предоставить изображения с разной степенью детализации для разных размеров, как рекомендует руководство по дизайну Apple. Предоставление более мелких значков для низких разрешений также экономит пропускную способность.

Возможно, не нужно предоставлять элементы <link> вообще. Например, браузеры автоматически запрашивают /favicon.ico с корня сайта, а Apple также автоматически запрашивает /apple-touch-icon-[size].png, /apple-touch-icon.png и т.д. Однако предоставление явных ссылок защищает вас от изменений этих соглашений.

Условное загрузка ресурсов с помощью медиа-запросов

Вы можете указать тип или запрос медиа внутри атрибута media; этот ресурс будет загружен только в том случае, если условие медиа истинно. Например:

html
<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)" />

События загрузки таблицы стилей

Вы можете определить момент загрузки таблицы стилей, прослушивая событие load, которое происходит на ней; аналогично, вы можете обнаружить ошибку при обработке таблицы стилей, прослушивая событие error:

html
<link rel="stylesheet" href="mystylesheet.css" id="my-stylesheet" />

<script>
  const stylesheet = document.getElementById("my-stylesheet");

  stylesheet.onload = () => {
    // Do something interesting; the sheet has been loaded
  };

  stylesheet.onerror = () => {
    console.log("An error occurred loading the stylesheet!");
  };
</script>

Примечание: Событие load срабатывает после загрузки и парсинга таблицы стилей и всего импортированного содержимого, и непосредственно перед тем, как стили начнут применяться к содержимому.

Примеры предварительной загрузки

Вы можете найти ряд примеров <link rel="preload"> в Предварительная загрузка контента с rel="preload".

Блокировка рендеринга до загрузки ресурса

Вы можете включить render маркер внутри атрибута blocking; рендеринг страницы будет заблокирован до тех пор, пока ресурс не будет загружен. Например:

html
<link blocking="render" rel="stylesheet" href="example.css" crossorigin />

Техническое описание

Категории содержимого Метаданные. Если itemprop присутствует: Потоковое содержимое и фразовое содержимое.
Разрешенное содержимое Ничего; это пустой элемент.
Пропуск тега Должен иметь открывающий тег и не должен иметь закрывающий тег.
Разрешенные родительские элементы Любой элемент, принимающий метаданные. Если itemprop присутствует: любой элемент, принимающий фразовое содержимое.
Неявная роль ARIA link с атрибутом href
Разрешенные роли ARIA Никакие роли role не разрешены
Интерфейс DOM HTMLLinkElement

Спецификации

Спецификация
Стандарт HTML
# the-link-element

Совместимость с браузерами

Настольный Мобильный
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari на IOS Samsung Internet WebView Android
link 1 12 1 ≤12.1 ≤4 18 4 ≤12.1 ≤3.2 1.0 4.4
as 50 17 56 37 10 50 56 37 10 5.0 50
blocking 105 105 Нет 91 Нет 105 Нет 72 Нет 20.0 105
charset 1 12 1 ≤12.1 ≤4 18 4 ≤12.1 ≤3.2 1.0 4.4
crossorigin 34 17
18До Firefox 83, crossorigin не поддерживается для rel="icon".
21 10 34
18До Firefox 83, crossorigin не поддерживается для rel="icon".
21 10 2.0 37
disabled
1В Chrome и других браузерах на основе Blink, добавление атрибута disabled с помощью JavaScript не удаляет таблицу стилей из document.styleSheets.
12Начиная с Edge 79, добавление атрибута disabled с помощью JavaScript не удаляет таблицу стилей из document.styleSheets.
1
≤12.1В Chrome и других браузерах на основе Blink, добавление атрибута disabled с помощью JavaScript не удаляет таблицу стилей из document.styleSheets.
≤4
18В Chrome и других браузерах на основе Blink, добавление атрибута disabled с помощью JavaScript не удаляет таблицу стилей из document.styleSheets.
4
≤12.1В Chrome и других браузерах на основе Blink, добавление атрибута disabled с помощью JavaScript не удаляет таблицу стилей из document.styleSheets.
≤3.2
1.0В Samsung Internet и других браузерах на основе Blink, добавление атрибута disabled с помощью JavaScript не удаляет таблицу стилей из document.styleSheets.
4.4В Chrome и других браузерах на основе Blink, добавление атрибута disabled с помощью JavaScript не удаляет таблицу стилей из document.styleSheets.
fetchpriority 101 101 Нет Нет 17.2 101 Нет 70 17.2 19.0 101
href 1 12 1 ≤12.1 ≤4 18 4 ≤12.1 ≤3.2 1.0 4.4
hreflang 1 12 1 ≤12.1 ≤4 18 4 ≤12.1 ≤3.2 1.0 4.4
imagesizes 73 79 78 60 17.2 73 79 52 17.2 11.0 73
imagesrcset 73 79 78 60 17.2 73 79 52 17.2 11.0 73
integrity 45 17 43 32 11.1 45 43 32 11.3 5.0 45
media 1 12 1 ≤12.1 ≤4 18 4 ≤12.1 ≤3.2 1.0 4.4
referrerpolicy 51 79 50 38 14 51 50 41 14 7.2 51
rel 1 12 1 9 1 18 4 10.1 1 1.0 4.4
rev 1 12 1 ≤12.1 ≤4 18 4 ≤12.1 ≤3.2 1.0 4.4
sizes ≤80 80 ≤72 67 6 80 79 57 6 13.0 80
target 1 12 1 ≤12.1 ≤4 18 4 ≤12.1 ≤3.2 1.0 4.4
type 1 12 1 ≤12.1 ≤4 18 4 ≤12.1 ≤3.2 1.0 4.4

См. также

  • Link HTTP заголовок

© 2005–2023 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/HTML/Element/link

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API