HTML5怎么让视频铺满容器_实现视频100%填充父元素的CSS写法【详解】

video元素默认不撑满父容器,需显式设置宽高并用object-fit控制填充方式;推荐object-fit:cover实现等比覆盖,避免黑边或变形,父容器须有明确高度。

video 元素默认不会撑满父容器,必须显式设置尺寸

HTML5 的 是替换元素(replaced element),行为类似图片:它有固有宽高比,且默认 display: inline,不会自动继承父容器宽高。直接写 width: 100%; height: 100% 往往无效,尤其当父容器没设高度或存在 padding/margin 时。

关键点在于:父容器必须有明确高度(不能是 height: auto),且需处理视频的宽高比拉伸/裁剪逻辑。

用 object-fit: cover 实现「铺满且不畸变」

这是最常用、最可靠的方案。它让视频内容等比缩放并覆盖整个容器,超出部分裁剪——效果类似背景图的 background-size: cover

  • 父容器需设 widthheight(如 height: 400pxheight: 100vh
  • 本身设 width: 100%; height: 100%
  • 必须加 object-fit: cover,否则仍按原始比例显示,留黑边
  • 注意兼容性:object-fit 在 IE 完全不支持,Edge 16+ 支持;如需兼容 IE,得用 poster 图 + JS 模拟或降级为 background-video
div.video-container {
  width: 100%;
  height: 500px;
  overflow: hidden;
}
div.video-container video {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

用 object-fit: fill 强制拉伸填满(慎用)

这个值会忽略原始宽高比,强行拉伸视频填满容器。画面一定变形,仅适用于对比例无要求的场景(如监控流、纯色测试视频)。

  • 代码上只改一个值:object-fit: fill
  • 常见误用:把它当成「铺满」的通用解,结果用户看到被压扁或拉长的人物
  • 移动端尤其明显——竖屏视频在横屏容器里会被严重扭曲
video {
  width: 100%;
  height: 100%;
  object-fit: fill; /* 不推荐用于人像/主视觉视频 */
}

父容器高度不确定时,用 aspect-ratio + object-fit 防黑边

如果父容器高度由内容决定(比如响应式卡片),但又想保持视频比例、避免上下黑边,可以用 CSS aspect-ratio(Chrome 88+/Firefox 89+/Safari 15.4+)。

  • 给容器设 aspect-ratio: 16 / 9,再让 video 100% 填充 + object-fit: cover
  • 这样即使宽度变化,容器高度也会自动计算,视频始终居中覆盖
  • 旧浏览器不支持 aspect-ratio,可用 padding-top 百分比 hack 替代(需额外 wrapper)
.video-wrapper {
  width: 100%;
  aspect-ratio: 16 / 9;
  background: #000;
}
.video-wrapper video {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

真正容易被忽略的是:很多开发者只写了 width: 100% 就以为完事了,却忘了 height 必须显式设定,也忘了 object-fit 才是控制填充方式的核心。没有它,100% 只是把视频“框”进去,不是“铺满”。