最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
HTML怎么做全屏背景视频_html全屏背景视频播放实现 经验分享
时间:2026-06-28 09:59:45 编辑:袖梨 来源:一聚教程网
全屏背景视频需用position:fixed+object-fit:cover实现真正全屏,必须加muted、autoplay、loop、playsinline四属性绕过静音拦截,优先选用H.264编码MP4并设poster防闪白。
全屏背景视频在现代网页中很常见,但直接用 <video> 标签拉满宽高,往往卡顿、错位、不自动播放,甚至被浏览器静音拦截——根本原因不是写法不对,而是没绕过浏览器的自动播放策略和视口适配逻辑。
怎么让 <video> 真正铺满整个视口且不滚动
关键不是靠 width: 100vw; height: 100vh,而是用 object-fit: cover + 绝对定位 + z-index 层级控制:
- 把
<video>放在<body>最外层,设为position: fixed; top: 0; left: 0; width: 100%; height: 100%; z-index: -1; - 必须加
object-fit: cover;,否则视频会拉伸变形或留黑边 - 避免用
min-height: 100vh,它会在内容超长时导致视频只覆盖首屏,而非“始终全屏” - 父容器不要设
overflow: hidden,否则 iOS Safari 可能截断视频渲染
为什么加了 autoplay 还不播放?
Chrome、Safari、Edge 现在默认禁止无用户交互的音频自动播放,哪怕视频是静音的,也得显式声明 muted 和 playsinline(尤其 iOS):
- 必须同时带
autoplay、muted、loop、playsinline四个属性 -
preload="auto"有助于提前加载,但对移动端效果有限;preload="metadata"更稳妥 - 如果页面加载后才动态插入
<video>,需调用.play()并捕获 Promise rejection(比如用户未交互就触发播放)
MP4 格式选 H.264 还是 H.265?
H.265(HEVC)压缩率高,但兼容性差:Safari 11+ 支持,Chrome 不支持(截至 119),Firefox 完全不支持。生产环境应优先用 H.264 baseline profile:
立即学习“前端免费学习笔记(深入)”;
- 用 FFmpeg 转码命令:
ffmpeg -i input.mp4 -vcodec libx264 -profile:v baseline -level 3.0 -acodec aac -ar 44100 -b:a 128k -vf "scale=-2:720" output.mp4 - 分辨率别超过 1280×720,太大文件体积陡增,首帧加载慢,低端机解码卡顿
- 别省略音频轨(即使静音),某些 Android 浏览器会因缺失音频拒绝 autoplay
如何优雅降级到背景图?
不能只靠 <video> 的 <source> fallback,因为不支持 <video> 的老浏览器(如 IE11)会直接忽略整个标签。要用 CSS 媒体查询 + @supports 配合:
- 先设一个
background-image作为兜底 - 再用
@supports (object-fit: cover)把 video 层叠上去,并设background: none覆盖掉图片 - 更保险的做法:JS 检测
HTMLMediaElement是否支持canPlayType('video/mp4'),再决定是否插入<video>
最常被忽略的一点:视频首帧加载完成前,页面会闪白或闪黑。务必加 poster 属性指向一张与视频第一帧一致的 JPG,且尺寸匹配视口比例——否则 poster 也会被 object-fit: cover 裁切错位。