全部学科
Python全栈
python
NodeJS全栈
nodejs
小程序首页
📅 2026-05-17 10 分钟 ✍️ juanwangdev

HTML5 视频标签与属性

HTML5 <video> 元素提供原生视频播放能力,无需第三方插件。

基本语法

HTML
<video controls width="640" height="360">
  <source src="video.mp4" type="video/mp4">
  <source src="video.webm" type="video/webm">
  您的浏览器不支持视频播放。
</video>

核心属性

播放控制属性

属性说明
controls布尔显示播放控件
autoplay布尔自动播放
muted布尔静音播放
loop布尔循环播放
preloadauto/metadata/none预加载策略
posterURL视频封面图
playsinline布尔移动端内联播放

尺寸属性

HTML
<video
  controls
  width="640"
  height="360"
  style="max-width: 100%;"
>
  <source src="video.mp4" type="video/mp4">
</video>

多格式兼容

格式支持情况

格式MIME类型浏览器支持
MP4 (H.264)video/mp4全平台
WebM (VP9)video/webmChrome, Firefox, Edge
Ogg (Theora)video/oggFirefox, Chrome

格式回退

HTML
<video controls>
  <!-- 优先使用WebM,体积更小 -->
  <source src="video.webm" type="video/webm">
  <!-- MP4作为回退 -->
  <source src="video.mp4" type="video/mp4">
  <!-- Ogg作为最后回退 -->
  <source src="video.ogv" type="video/ogg">
  <!-- 完全不支持时的提示 -->
  <p>请升级浏览器或<a href="video.mp4">下载视频</a></p>
</video>

预加载策略

HTML
<!-- 预加载全部视频 -->
<video preload="auto" src="video.mp4"></video>

<!-- 仅预加载元数据(时长、尺寸) -->
<video preload="metadata" src="video.mp4"></video>

<!-- 不预加载,用户点击后才加载 -->
<video preload="none" src="video.mp4"></video>
行为适用场景
auto预加载全部首屏重要视频
metadata仅元数据默认推荐
none不预加载非首屏视频

自动播放策略

无声自动播放

HTML
<!-- 浏览器策略:自动播放必须静音 -->
<video autoplay muted loop playsinline>
  <source src="background.mp4" type="video/mp4">
</video>

有条件播放

HTML
<video id="myVideo" muted>
  <source src="video.mp4" type="video/mp4">
</video>

<script>
const video = document.getElementById('myVideo');

// 尝试自动播放
video.play().catch(() => {
  // 自动播放被阻止,显示播放按钮
  showPlayButton();
});
</script>

JavaScript API

播放控制

JavaScript
const video = document.querySelector('video');

// 播放/暂停
video.play();
video.pause();

// 跳转
video.currentTime = 30; // 跳转到30秒

// 音量控制
video.volume = 0.5; // 0-1
video.muted = true;

// 播放速率
video.playbackRate = 1.5; // 1.5倍速

事件监听

JavaScript
video.addEventListener('play', () => console.log('开始播放'));
video.addEventListener('pause', () => console.log('暂停'));
video.addEventListener('ended', () => console.log('播放结束'));
video.addEventListener('timeupdate', () => {
  console.log(`当前进度: ${video.currentTime}/${video.duration}`);
});
video.addEventListener('loadedmetadata', () => {
  console.log(`视频时长: ${video.duration}秒`);
});

注意:移动端浏览器限制自动播放,必须添加 mutedplaysinline 属性。

要点总结

  • 使用 <source> 提供多格式回退,MP4 + WebM 覆盖主流浏览器
  • 自动播放必须静音(浏览器策略)
  • 预加载推荐使用 metadata,平衡体验与流量
  • poster 属性设置视频封面图
  • JavaScript API 控制播放、暂停、跳转、音量

📝 发现内容有误?点击此处直接编辑

← 上一篇 HTML 预加载与预连接优化
下一篇 → HTML5 音频标签与属性
想查看更多题目和详细解析?
小程序提供完整的题库、模拟考试和详细解析
马上就来

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库