0Pricing
HTML Academy · 课时

video 元素与宽高比

嵌入视频并保持正确的宽高比

video 元素与宽高比 是 CoddyKit 上的免费 HTML Academy 课时。 这是第 2 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 HTML Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 HTML Academy 课程共包含 4 节课。

video 元素

<video> 元素可以原生嵌入视频:

<video controls width="800" height="450" src="tutorial.mp4">
  Your browser does not support video.
</video>

必要属性

重要的 video 属性:

<video
  src="demo.mp4"
  controls           <!-- show player UI -->
  width="1280"       <!-- intrinsic width -->
  height="720"       <!-- intrinsic height -->
  poster="preview.jpg" <!-- thumbnail before play -->
  preload="metadata"   <!-- preload only metadata -->
>
  Your browser does not support video.
</video>

视频海报属性

poster 属性用于设置视频播放前显示的缩略图:

<video controls poster="/thumbnails/episode-42.jpg" width="800" height="450">
  <source src="episode-42.mp4" type="video/mp4">
</video>
<!-- Without poster: browser shows a black frame
     or the first frame of the video (browser-dependent) -->

用于保持宽高比的宽度和高度

请始终指定宽度和高度,以防止布局偏移:

<video controls width="1280" height="720" src="video.mp4"></video>
<!-- Browser reserves correct space before video loads -->
<!-- Prevents CLS (Cumulative Layout Shift) -->
<!-- Make responsive with CSS:
  video { width: 100%; height: auto; }
-->

响应式视频 CSS

使用 CSS 让视频具有响应式效果:

video {
  width: 100%;
  height: auto;
  max-width: 1280px;
  display: block;
  margin: 0 auto;
}

/* Aspect ratio box: */
.video-wrapper {
  position: relative;
  padding-top: 56.25%;  /* 16:9 aspect ratio: 9/16 = 0.5625 */
}
.video-wrapper video {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
}

CSS 宽高比属性

使用 CSS aspect-ratio 的现代方法:

video {
  width: 100%;
  aspect-ratio: 16 / 9;
  height: auto;
}

/* Other common ratios: */
/* 4:3 → aspect-ratio: 4 / 3 */
/* 21:9 → aspect-ratio: 21 / 9 */
/* 1:1 → aspect-ratio: 1 */

通过 JS 控制 video 播放

使用 JavaScript 控制 video:

const video = document.getElementById('my-video');

video.play();
video.pause();
video.currentTime = 60;  // jump to 1 minute
video.playbackRate = 1.5;  // 1.5x speed
video.volume = 0.7;
video.muted = true;
video.requestFullscreen();

console.log(video.duration);    // total length
console.log(video.paused);      // is it paused?

video 事件

监听 video 事件:

video.addEventListener('play', () => updatePlayButton());
video.addEventListener('pause', () => updatePlayButton());
video.addEventListener('ended', () => showNextVideo());
video.addEventListener('timeupdate', () => updateProgressBar());
video.addEventListener('loadedmetadata', () => {
  console.log('Duration:', video.duration);
  console.log('Dimensions:', video.videoWidth, 'x', video.videoHeight);
});

全屏应用程序接口

以编程方式进入和退出全屏:

const btn = document.getElementById('fullscreen-btn');
const video = document.getElementById('player');

btn.addEventListener('click', () => {
  if (!document.fullscreenElement) {
    video.requestFullscreen();
  } else {
    document.exitFullscreen();
  }
});

document.addEventListener('fullscreenchange', () => {
  btn.textContent = document.fullscreenElement ? 'Exit Fullscreen' : 'Fullscreen';
});

video 自动播放策略

浏览器针对 video 的自动播放规则:

  • 静音视频 → 可以在所有现代浏览器中自动播放
  • 未静音视频 → 除非用户与页面进行过交互,否则会被阻止
  • 谷歌的媒体互动指数 → 频繁访问者可能被允许自动播放
  • 始终提供播放按钮作为后备方案

视频的可访问性

视频的可访问性要求:

  • 为所有对话和重要声音提供字幕
  • 为聋人或听力障碍用户提供文字稿
  • 为盲人用户提供音频描述(描述仅通过视觉呈现的信息)
  • 确保键盘控制有效(原生控制功能可以做到这一点)

快速检查

哪个 video 属性会在视频播放前显示静态图像?

回顾:video 元素

video 元素要点:

  • controls — 显示播放器界面
  • width 和 height — 防止布局偏移
  • poster — 播放前显示缩略图
  • preload="metadata" — 良好的性能默认设置
  • 响应式设置:width: 100%; height: auto; 或 aspect-ratio: 16/9
  • 静音视频可以自动播放;大多数浏览器不允许未静音视频自动播放

常见问题解答

「video 元素与宽高比」课时是免费的吗?

是的 — 「video 元素与宽高比」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 HTML Academy 课程的其余内容,请升级到 CoddyKit PRO。 HTML Academy 课程共包含 4 节课。

「video 元素与宽高比」这节课中我会学到什么?

嵌入视频并保持正确的宽高比 你通过在浏览器中直接运行的动手代码来练习 HTML Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 HTML Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 HTML Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 2 节课,共 4 节。

「video 元素与宽高比」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 HTML Academy 课中编写并运行代码吗?

能。每节 HTML Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. audio 元素:src、controls、loop 和 autoplay
  2. video 元素与宽高比
  3. 用于多种格式的 source 元素
  4. 使用 track 和 WebVTT 添加字幕
← 返回 HTML Academy