【发布时间】:2017-10-23 23:27:56
【问题描述】:
我正在尝试将全屏背景视频添加到我的网站。我也想添加封面图片,因为在移动设备上视频无法播放(因为没有用户交互,浏览器不会加载它)。
所以我添加了视频,将其正确定位,然后添加了图像。图像是视频的第一帧。问题来了:视频和图像的位置不一样。所以首先用户看到封面图像,然后过了一会儿视频开始播放,但有一个跳跃,因为视频与图像的位置不同。请注意,您可能需要调整浏览器窗口的大小才能看到问题。在 1920x1080 分辨率下几乎看不到它。
如何正确定位视频和封面图片?
请参阅下面的演示代码。视频在 2 秒后开始播放,因此您可以先看到图像,然后再看到视频。
这是一个demo video,您可以在其中看到图像,然后是暂停的视频,cover image 和 video。
<!DOCTYPE html>
<html lang="en">
<head>
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<style>
html,
body,
div,
video {
margin: 0;
padding: 0;
}
html,
body {
height: 100%;
}
.video {
position: fixed;
top: 50%;
left: 50%;
z-index: 1;
min-width: 100%;
min-height: 100%;
width: auto;
height: auto;
-webkit-transform: translate(-50%, -50%);
-ms-transform: translate(-50%, -50%);
transform: translate(-50%, -50%);
}
.panel-cover {
position: fixed;
background-image: url(cover.jpg);
z-index: 2;
background-position: center;
background-repeat: no-repeat;
background-size: cover;
width: 100%;
height: 100%;
}
</style>
</head>
<body>
<video id="background-video" class="video" muted loop preload="auto">
<source src="Palm_Trees.mp4" type="video/mp4">
</video>
<div class="panel-cover"></div>
<script>
(function () {
function playVideo(video) {
setTimeout (function () {
video.play();
document.querySelector(".panel-cover").style.background = 'none';
}, 2000);
}
window.onload = function () {
var video = document.querySelector("#background-video");
video.addEventListener("canplay", function () {
playVideo(video);
}, false);
if (video.readyState > 3) {
playVideo(video);
}
}
})();
</script>
</body>
</html>
【问题讨论】:
标签: css html html5-video