一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

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 现在默认禁止无用户交互的音频自动播放,哪怕视频是静音的,也得显式声明 mutedplaysinline(尤其 iOS):

  • 必须同时带 autoplaymutedloopplaysinline 四个属性
  • 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 裁切错位。

热门栏目