video元素默认不撑满父容器,需显式设置宽高并用object-fit控制填充方式;推荐object-fit:cover实现等比覆盖,避免黑边或变形,父容器须有明确高度。
HTML5 的 是替换元素(replaced element),行为类似图片:它有固有宽高比,且默认 display: inline,不会自动继承父容器宽高。直接写 width: 100%; height: 100% 往往无效,尤其当父容器没设高度或存在 padding/margin 时。
关键点在于:父容器必须有明确高度(不能是 height: auto),且需处理视频的宽高比拉伸/裁剪逻辑。
这是最常用、最可靠的方案。它让视频内容等比缩放并覆盖整个容器,超出部分裁剪——效果类似背景图的 background-size: cover。
width 和 height(如 height: 400px 或 height: 100vh) 本身设 width: 100%; height: 100%
object-fit: cover,否则仍按原始比例显示,留黑边object-fit 在 IE 完全不支持,Edge 16+ 支持;如需兼容 IE,得用 poster 图 + JS 模拟或降级为 background-videodiv.video-container {
width: 100%;
height: 500px;
overflow: hidden;
}
div.video-container video {
width: 100%;
height: 100%;
object-fit: cover;
display: block;
}这个值会忽略原始宽高比,强行拉伸视频填满容器。画面一定变形,仅适用于对比例无要求的场景(如监控流、纯色测试视频)。
object-fit: fill
video {
width: 100%;
height: 100%;
object-fit: fill; /* 不推荐用于人像/主视觉视频 */
}如果父容器高度由内容决定(比如响应式卡片),但又想保持视频比例、避免上下黑边,可以用 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% 只是把视频“框”进去,不是“铺满”。