<link>: Элемент ссылки на внешний ресурс
Элемент <link> HTML задаёт взаимосвязь между текущим документом и внешним ресурсом. Этот элемент чаще всего используется для подключения таблиц стилей, но также используется для определения иконок сайта (как иконок типа «favicon», так и иконок для домашнего экрана и приложений на мобильных устройствах) и других целей.
Попробуйте
Для подключения внешней таблицы стилей, необходимо включить элемент <link> в свой <head>, как показано ниже:
<link href="main.css" rel="stylesheet" />
В этом простом примере путь к таблице стилей указан в атрибуте href, а атрибут rel имеет значение stylesheet. rel означает «взаимосвязь», и это одна из ключевых особенностей элемента <link> — значение определяет, как связанный элемент относится к документу.
Существуют и другие распространённые типы. Например, ссылка на значок favicon сайта:
<link rel="icon" href="favicon.ico" />
Существует ряд других значений атрибута rel, в основном используемых для обозначения специальных типов значков для различных мобильных платформ, например:
<link
rel="apple-touch-icon"
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 указывает, должен ли ресурс загружаться с запросом 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>элементы, WorkerimportScriptsstyle <link rel=stylesheet>элементы, CSS@importtrack <track>элементыvideo <video>элементыworker Worker, SharedWorker -
blockingЭкспериментальный -
Этот атрибут явно указывает, что определенные операции должны быть заблокированы при загрузке внешнего ресурса. Он должен использоваться только тогда, когда атрибут
relсодержит ключевые словаexpectилиstylesheet. Операции, которые должны быть заблокированы, должны быть перечислены в виде разделителя пробелов ниже.-
render: Отображение содержимого на экране заблокировано.
-
crossorigin-
Этот перечисляемый атрибут указывает, нужно ли использовать CORS при загрузке ресурса. CORS-активированные изображения можно повторно использовать в элементе
<canvas>без повреждения. Допустимые значения:anonymous-
Выполняется междоменный запрос (т. е. с заголовком HTTP
Origin), но никаких данных не отправляется (т. е. без cookie, сертификата X.509 или аутентификации HTTP Basic). Если сервер не предоставляет данные для сайта-источника (не задав заголовок HTTPAccess-Control-Allow-Origin), ресурс будет поврежден и его использование ограничено. use-credentials-
Выполняется междоменный запрос (т. е. с заголовком HTTP
Origin) вместе с отправкой данных (т. е. отправляются cookie, сертификат и/или выполняется аутентификация HTTP Basic). Если сервер не предоставляет данные для сайта-источника (через заголовок HTTPAccess-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'sapple-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. Также, этот атрибут не означает «ревизия» и не должен использоваться с номером версии, даже если многие сайты используют его таким образом.
Примеры
Включение таблицы стилей
Для включения таблицы стилей в страницу используйте следующий синтаксис:
<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 как подсказки.
<!-- 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; этот ресурс будет загружен только в том случае, если условие медиа истинно. Например:
<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:
<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; рендеринг страницы будет заблокирован до тех пор, пока ресурс не будет загружен. Например:
<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 |
См. также
-
LinkHTTP заголовок
© 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