HTML 实例¶
示例说明¶
本页组合图片、音频、视频、字幕和响应式嵌入。所有资源 URL 都是占位路径,示例不依赖 仓库中的真实媒体;复制到项目后应替换文件,并提供真实文字稿、字幕和失败回退。
组合媒体文章¶
<article>
<h1>城市声音采集记录</h1>
<picture>
<source srcset="station.avif" type="image/avif">
<source srcset="station.webp" type="image/webp">
<img src="station.jpg" alt="清晨空旷的火车站站台"
width="960" height="540">
</picture>
<figure>
<figcaption>站台环境声,时长约两分钟</figcaption>
<audio controls preload="none">
<source src="station-sound.opus" type="audio/ogg; codecs=opus">
<source src="station-sound.mp3" type="audio/mpeg">
<p>无法播放音频,请阅读下方文字稿。</p>
</audio>
</figure>
<details>
<summary>音频文字稿</summary>
<p>[列车进站声] 广播提示下一班列车将在三分钟后到达。</p>
</details>
<video controls preload="metadata" poster="route-poster.jpg"
width="960" height="540">
<source src="route.webm" type="video/webm">
<source src="route.mp4" type="video/mp4">
<track kind="captions" src="route.zh-CN.vtt"
srclang="zh-CN" label="中文字幕" default>
<p>无法播放视频,请阅读同页的视频说明。</p>
</video>
</article>
picture 中的 source/type 用于格式选择,img 负责回退和替代文本。音频采用
preload="none" 避免文章打开即下载,视频采用 metadata 以便取得基础信息。
字幕 track 应指向真实、校对后的 WebVTT。纯音频另有普通 HTML 文字稿,避免把访问
能力绑定到脚本播放器。生产页面还应为视频提供完整文字稿和必要的视觉描述。
响应式样式¶
.media-page {
width: min(100% - 2rem, 60rem);
margin-inline: auto;
}
.media-page img,
.media-page video,
.media-page audio {
display: block;
max-width: 100%;
}
.media-page img,
.media-page video {
height: auto;
}
width 和 height 属性提供固有比例,CSS 再限制可用宽度。音频控件在窄屏上的最小
尺寸因浏览器而异,应实测而不是强制很小的固定高度。
第三方嵌入占位¶
<div class="embed" data-provider="example">
<p>外部播放器尚未加载。</p>
<button type="button">同意并加载外部媒体</button>
</div>
示例故意不含真实 iframe 和脚本。实际加载时,为嵌入框设置描述性 title、固定比例、
按需 loading="lazy",只开放必要权限,并在发送请求前说明第三方隐私影响。
自动播放背景的安全形式¶
<video autoplay muted playsinline loop aria-hidden="true" tabindex="-1">
<source src="ambient.webm" type="video/webm">
</video>
<button type="button">暂停背景动画</button>
这只适用于纯装饰内容。按钮必须真正控制状态,并在 prefers-reduced-motion: reduce
下默认停用;浏览器仍可能不播放,任何带声音内容都不应这样启动。
发布前检查¶
- 检查每个
source的编码、type和服务端 MIME 类型。 - 检查字幕语言、同步、讲话者和重要音效,提供可读文字稿。
- 测试
preload未生效、autoplay被阻止和资源 404 的情况。 - 测试响应式尺寸、键盘操作、焦点、触屏、读屏和缩放。
- 检查首屏体积、缓存、范围请求、海报图和第三方隐私成本。