<source> Элемент HTML для источника медиафайла или изображения
Базовая поддержка Широко доступно
Эта функция хорошо зарекомендовала себя и работает на многих устройствах и в разных версиях браузеров. Она доступна во всех браузерах с июля 2015 года.
Элемент <source> HTML задаёт один или несколько медиаисточников для элементов <picture>, <audio> и <video>. Это пустой элемент, то есть у него нет содержимого и для него не требуется закрывающий тег. Этот элемент часто используется для предоставления одного и того же медиаконтента в нескольких форматах файлов, чтобы обеспечить совместимость с широким спектром браузеров, учитывая различия в поддержке ими форматов файлов изображений и медиаформатов.
Попробуйте
<video controls width="250" height="200" muted> <source src="/shared-assets/videos/flower.webm" type="video/webm" /> <source src="/shared-assets/videos/flower.mp4" type="video/mp4" /> Download the <a href="/shared-assets/videos/flower.webm">WEBM</a> or <a href="/shared-assets/videos/flower.mp4">MP4</a> video. </video>
Атрибуты
Этот элемент поддерживает все глобальные атрибуты. Кроме того, с ним можно использовать следующие атрибуты:
type-
Задаёт тип MIME изображения или другой тип медиа, при необходимости включая параметр
codecs. src-
Задаёт URL медиаисточника. Обязателен, если родительским элементом
<source>является<audio>или<video>. Не допускается, если родительский элемент —<picture>. srcset-
Задаёт разделённый запятыми список одного или нескольких URL изображений и их дескрипторов. Обязателен, если родительским элементом
<source>является<picture>. Не допускается, если родительский элемент —<audio>или<video>.Список состоит из строк, разделённых запятыми, которые указывают на набор изображений, доступных браузеру для использования. Каждая строка состоит из следующего:
- URL, указывающий расположение изображения.
- Необязательный дескриптор ширины — положительное целое число, непосредственно за которым следует
"w", например300w. - Необязательный дескриптор плотности пикселей — положительное число с плавающей точкой, непосредственно за которым следует
"x", например2x.
Чтобы строка списка была допустимой, в ней должен быть указан либо дескриптор ширины, либо дескриптор плотности пикселей. Эти два дескриптора нельзя использовать вместе; на протяжении всего списка следует использовать только один из них. Значение каждого дескриптора в списке должно быть уникальным. Браузер выбирает наиболее подходящее изображение для отображения в данный момент на основе этих дескрипторов. Если дескрипторы не указаны, используется значение по умолчанию
1x. Если также присутствует атрибутsizes, каждая строка должна содержать дескриптор ширины. Если браузер не поддерживаетsrcset, для изображения по умолчанию будет использоватьсяsrc. sizes-
Задаёт список размеров источника, описывающих конечную ширину изображения после отрисовки. Допускается, если родительским элементом
<source>является<picture>. Не допускается, если родительский элемент —<audio>или<video>.Список состоит из размеров источника, разделённых запятыми. Каждый размер источника представляет собой пару из медиавыражения и длины. Перед компоновкой страницы браузер использует эту информацию, чтобы определить, какое изображение, заданное в
srcset, отображать. Обратите внимание:sizesприменяется только в том случае, если сsrcsetуказаны дескрипторы ширины, а не дескрипторы плотности пикселей (то есть следует использовать200wвместо2x). media-
Задаёт медиавыражение для целевого типа медиа ресурса.
height-
Задаёт внутреннюю высоту изображения в пикселях. Допускается, если родительским элементом
<source>является<picture>. Не допускается, если родительский элемент —<audio>или<video>.Значение высоты должно быть целым числом без единиц измерения.
width-
Задаёт внутреннюю ширину изображения в пикселях. Допускается, если родительским элементом
<source>является<picture>. Не допускается, если родительский элемент —<audio>или<video>.Значение ширины должно быть целым числом без единиц измерения.
Примечания по использованию
Элемент <source> — это пустой элемент, то есть у него не только нет содержимого, но и отсутствует закрывающий тег. Иными словами, в HTML вы никогда не используете </source>.
Браузер перебирает список элементов <source>, чтобы найти поддерживаемый им формат. Он использует первый формат, который может отобразить. Для каждого элемента <source>:
- Если атрибут
typeне указан, браузер получает тип медиа с сервера и определяет, можно ли его отобразить. Если медиафайл нельзя отобразить, браузер проверяет следующий элемент<source>в списке. - Если атрибут
typeуказан, браузер сразу сравнивает его с типами медиа, которые он может отображать. Если тип не поддерживается, браузер пропускает запрос к серверу и сразу проверяет следующий элемент<source>.
Если ни один из элементов <source> не предоставляет подходящий источник:
- В случае элемента
<picture>браузер использует изображение, заданное во вложенном элементе<img>элемента<picture>. - В случае элемента
<audio>или<video>браузер отображает содержимое, расположенное между открывающим и закрывающим тегами элемента.
Сведения о форматах изображений, поддерживаемых веб-браузерами, и рекомендации по выбору подходящих форматов см. в нашем руководстве по типам и форматам файлов изображений. Подробнее о типах медиа для видео и аудио, которые можно использовать, см. в руководстве по типам и форматам медиа.
Примеры
>Использование атрибута type с <video>
В этом примере показано, как предложить видео в разных форматах: WebM для браузеров, которые его поддерживают, Ogg — для поддерживающих Ogg, и QuickTime — для поддерживающих QuickTime. Если браузер не поддерживает элемент <audio> или <video>, вместо него отображается уведомление. Если браузер поддерживает элемент, но не поддерживает ни один из указанных форматов, для элемента <audio> или <video> возникает событие error, а стандартные элементы управления медиа (если они включены) указывают на ошибку. Подробнее о том, какие форматы медиафайлов использовать и какие браузеры их поддерживают, см. в нашем руководстве по типам и форматам медиа.
<video controls> <source src="foo.webm" type="video/webm" /> <source src="foo.ogg" type="video/ogg" /> <source src="foo.mov" type="video/quicktime" /> I'm sorry; your browser doesn't support HTML video. </video>
Использование атрибута media с <video>
В этом примере показано, как предложить альтернативный исходный файл для областей просмотра шире определённого значения. Когда среда просмотра пользователя соответствует заданному условию media, выбирается соответствующий элемент <source>. Затем запрашивается и отображается содержимое его атрибута src. Если условие media не выполняется, браузер переходит к следующему элементу <source> в списке. У второго варианта <source> в приведённом ниже коде нет условия media, поэтому он будет выбран во всех остальных контекстах просмотра.
<video controls> <source src="foo-large.webm" media="(width >= 800px)" /> <source src="foo.webm" /> I'm sorry; your browser doesn't support HTML video. </video>
Дополнительные примеры можно найти в статье Видео и аудио в HTML в разделе «Обучение».
Использование атрибута media с <picture>
В этом примере два элемента <source> включены в <picture> и предоставляют версии изображения, которые можно использовать, когда доступное пространство превышает определённую ширину. Если доступная ширина меньше наименьшего из этих значений, браузер использует изображение, заданное в элементе <img>.
<picture> <source srcset="mdn-logo-wide.png" media="(width >= 800px)" /> <source srcset="mdn-logo-medium.png" media="(width >= 600px)" /> <img src="mdn-logo-narrow.png" alt="MDN Web Docs" /> </picture>
При использовании элемента <picture> всегда необходимо включать элемент <img> с резервным изображением. Для обеспечения доступности также не забудьте добавить атрибут alt, если только изображение не является исключительно декоративным и не относится к содержимому.
Использование атрибутов height и width с <picture>
В этом примере три элемента <source> с атрибутами height и width включены в элемент <picture>. Медиавыражение позволяет браузеру выбрать изображение для отображения с атрибутами height и width на основе размера области просмотра.
<picture>
<source
srcset="landscape.png"
media="(width >= 1000px)"
width="1000"
height="400" />
<source
srcset="square.png"
media="(width >= 800px)"
width="800"
height="800" />
<source
srcset="portrait.png"
media="(width >= 600px)"
width="600"
height="800" />
<img
src="fallback.png"
alt="Image used when the browser does not support the sources"
width="500"
height="400" />
</picture>
Техническая сводка
| Категории содержимого | Нет. |
|---|---|
| Допустимое содержимое | Нет; это пустой элемент. |
| Пропуск тегов | Должен иметь открывающий тег и не должен иметь закрывающего тега. |
| Допустимые родительские элементы | Медиаэлемент — <audio> или <video>; элемент должен располагаться перед любым элементом потокового содержимого или элементом <track>. Элемент <picture>; элемент должен располагаться перед элементом <img>. |
| Неявная роль ARIA | Нет соответствующей роли |
| Допустимые роли ARIA | Роль role не допускается |
| Интерфейс DOM | HTMLSourceElement |
Спецификации
| Спецификация |
|---|
| HTML> # the-source-element> |
Совместимость с браузерами
| Компьютеры | Мобильные устройства | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | WebView на iOS | |
source |
3 | 12 | 3.5До Firefox 15 Firefox выбирал первый элемент source, тип которого соответствовал MIME-типу поддерживаемого медиаформата; подробности см. в ошибке 449363. |
15 | 3.1 | 18 | 4До Firefox для Android 15 Firefox для Android выбирал первый элемент source, тип которого соответствовал MIME-типу поддерживаемого медиаформата; подробности см. в ошибке 449363. |
14 | 2 | 1.0 | 4.4 | 2 |
height |
90 | 90 | 108 | 76 | 15 | 90 | 108 | 64 | 15 | 15.0 | 90 | 15 |
media |
3 | 12 | 15media поддерживается в <source> внутри <picture>, <audio> и <video>. В Firefox 53–119 media поддерживается только в <source> внутри <picture>. |
15 | 3.1 | 18 | 15media поддерживается в <source> внутри <picture>, <audio> и <video>. В Firefox для Android 53–119 media поддерживается только в <source> внутри <picture>. |
14 | 2 | 1.0 | 4.4 | 2 |
sizes |
3834–38Поддерживается подмножество синтаксиса переключения разрешения (с использованием дескриптораx), но не полный синтаксис, который можно использовать с sizes (с использованием дескриптора w). |
13 | 38 |
2521–25Поддерживается подмножество синтаксиса переключения разрешения (с использованием дескриптораx), но не полный синтаксис, который можно использовать с sizes (с использованием дескриптора w). |
9.1 |
3834–38Поддерживается подмножество синтаксиса переключения разрешения (с использованием дескриптораx), но не полный синтаксис, который можно использовать с sizes (с использованием дескриптора w). |
38 |
2521–25Поддерживается подмножество синтаксиса переключения разрешения (с использованием дескриптораx), но не полный синтаксис, который можно использовать с sizes (с использованием дескриптора w). |
9.3 |
3.02.0–3.0Поддерживается подмножество синтаксиса переключения разрешения (с использованием дескриптораx), но не полный синтаксис, который можно использовать с sizes (с использованием дескриптора w). |
3837–38Поддерживается подмножество синтаксиса переключения разрешения (с использованием дескриптораx), но не полный синтаксис, который можно использовать с sizes (с использованием дескриптора w). |
9.3 |
src |
3 | 12 | 3.5 | 15 | 3.1 | 18 | 4 | 14 | 2 | 1.0 | 4.4 | 2 |
srcset |
3834–38Поддерживается подмножество синтаксиса переключения разрешения (с использованием дескриптораx), но не полный синтаксис, который можно использовать с sizes (с использованием дескриптора w). |
13 | 38 |
2521–25Поддерживается подмножество синтаксиса переключения разрешения (с использованием дескриптораx), но не полный синтаксис, который можно использовать с sizes (с использованием дескриптора w). |
9.1 |
3834–38Поддерживается подмножество синтаксиса переключения разрешения (с использованием дескриптораx), но не полный синтаксис, который можно использовать с sizes (с использованием дескриптора w). |
38 |
2521–25Поддерживается подмножество синтаксиса переключения разрешения (с использованием дескриптораx), но не полный синтаксис, который можно использовать с sizes (с использованием дескриптора w). |
9.3 |
3.02.0–3.0Поддерживается подмножество синтаксиса переключения разрешения (с использованием дескриптораx), но не полный синтаксис, который можно использовать с sizes (с использованием дескриптора w). |
3837–38Поддерживается подмножество синтаксиса переключения разрешения (с использованием дескриптораx), но не полный синтаксис, который можно использовать с sizes (с использованием дескриптора w). |
9.3 |
type |
3 | 12 | 3.5 | 15 | 3.1 | 18 | 4 | 14 | 2 | 1.0 | 4.4 | 2 |
width |
90 | 90 | 108 | 76 | 15 | 90 | 108 | 64 | 15 | 15.0 | 90 | 15 |
См. также
-
Элемент
<audio> -
Элемент
<picture> -
Элемент
<video> - Руководство по типам и форматам файлов изображений
- Руководство по типам и форматам медиа
- Производительность веб-сайтов
© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/source