<source>: 媒体或图像源元素

基线 广泛可用

此功能已稳定并可在许多设备和浏览器版本上运行。它自 2015 年 7 月.

<source> HTML 元素为 <picture><audio><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> 元素,浏览器将回退到使用 <picture> 元素的 <img> 子元素中指定的图像。
  • 对于 <audio><video> 元素,浏览器将回退到显示元素的开始和结束标签之间包含的内容。

有关网络浏览器支持的图像格式的信息以及有关选择要使用的适当格式的指南,请参阅我们的 图像文件类型和格式指南。有关您可以使用的视频和音频媒体类型的详细信息,请参阅 媒体类型和格式指南

示例

<video> 中使用 type 属性

此示例演示了如何以不同的格式提供视频:WebM 用于支持它的浏览器,Ogg 用于支持 Ogg 的浏览器,以及 QuickTime 用于支持 QuickTime 的浏览器。如果浏览器不支持 <audio><video> 元素,则会显示通知。如果浏览器支持该元素,但不支持任何指定的格式,则会引发 error 事件,并且默认媒体控件(如果已启用)会指示错误。有关使用哪些媒体文件格式及其浏览器支持的更多详细信息,请参阅我们的 媒体类型和格式指南

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

<video> 中使用 media 属性

此示例演示了如何为超过一定宽度的视窗提供备用源文件。当用户的浏览环境满足指定的 media 条件时,会选择关联的 <source> 元素。然后请求并呈现其 src 属性的内容。如果 media 条件不匹配,浏览器将继续处理列表中的下一个 <source>。下面代码中的第二个 <source> 选项没有 media 条件,因此它将被选择用于所有其他浏览上下文。

html
<video controls>
  <source src="foo-large.webm" media="(min-width: 800px)" />
  <source src="foo.webm" />
  I'm sorry; your browser doesn't support HTML video.
</video>

有关更多示例,学习区域中的 视频和音频内容 文章是一个很好的资源。

<picture> 中使用 media 属性

在此示例中,两个 <source> 元素包含在 <picture> 中,提供当可用空间超过一定宽度时要使用的图像版本。如果可用宽度小于这些宽度中最小的一个,浏览器将回退到 <img> 元素中指定的图像。

html
<picture>
  <source srcset="mdn-logo-wide.png" media="(min-width: 800px)" />
  <source srcset="mdn-logo-medium.png" media="(min-width: 600px)" />
  <img src="mdn-logo-narrow.png" alt="MDN Web Docs" />
</picture>

使用 <picture> 元素,你必须始终包含一个带有回退图像的 <img>。此外,请确保添加 alt 属性以确保可访问性,除非图像纯粹是装饰性的,与内容无关。

<picture> 中使用 heightwidth 属性

在此示例中,三个带有 heightwidth 属性的 <source> 元素包含在 <picture> 元素中。使用 媒体查询 允许浏览器根据 视窗 大小,选择一个要显示的带有 heightwidth 属性的图像。

html
<picture>
  <source
    srcset="landscape.png"
    media="(min-width: 1000px)"
    width="1000"
    height="400" />
  <source
    srcset="square.png"
    media="(min-width: 800px)"
    width="800"
    height="800" />
  <source
    srcset="portrait.png"
    media="(min-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

浏览器兼容性

BCD 表格仅在浏览器中加载

另请参阅