【发布时间】:2019-06-05 15:45:04
【问题描述】:
我有一个视频标签,我想连续播放,同时用户可以同时在网站上做一些事情。但是我发现,如果视频开始缓冲的背景图像之间的背景转换。我在下面的 sn-p 中有一个可运行的示例。
注意: 如果 sn-p 正常运行,似乎不会发生缓冲,但如果将 sn-p 放在“整页”中,就会发生缓冲。
function changeBackground() {
const randomColor = '#'+Math.floor(Math.random()*16777215).toString(16);
const element = document.getElementById('background');
const currentOpacity = element.style.opacity;
const currentBackground = element.style.backgroundImage;
switch (currentBackground) {
case 'url("https://cdn.freebiesupply.com/logos/large/2x/stackoverflow-com-logo-png-transparent.png")': {
element.style.backgroundImage = 'url("https://i5.walmartimages.ca/images/Large/428/5_r/6000195494285_R.jpg")';
break;
}
case 'url("https://i5.walmartimages.ca/images/Large/428/5_r/6000195494285_R.jpg")': {
element.style.backgroundImage = 'url("https://cdn.freebiesupply.com/logos/large/2x/stackoverflow-com-logo-png-transparent.png")';
break;
}
default: {
break;
}
}
}
const element = document.getElementById('background');
element.style.backgroundImage = 'url("https://cdn.freebiesupply.com/logos/large/2x/stackoverflow-com-logo-png-transparent.png")'
#background {
display: flex;
position: absolute;
width: 100%;
height: 100%;
z-index: -10;
background-size: contain;
transition: background-image 3s ease-in-out;
}
#button {
display: flex;
width: 200px;
height: 100px;
background-color: orange;
text-align: center;
}
#video {
display: flex;
position: absolute;
top: 0;
right: 0;
width: 400px;
height: 350px;
}
<div id='root' style='width: 100%; height: 500px'>
<div id='background'></div>
<div id='button' onClick="changeBackground()">Click me to change the background!</div>
<video
id='video'
autoplay
muted
loop
controls
src="https://s3.amazonaws.com/codecademy-content/courses/React/react_video-cute.mp4"/>
</div>
可能是什么原因,有没有办法防止视频缓冲,同时仍然有背景图像过渡?
编辑:添加我在 MacOS 上使用 Chrome 可能很重要。
编辑 2:从我收集的回复来看,并不是每个人都能重现这个问题,所以我去了一台老式的 Windows PC 并在那里试了一下。发现背景转换非常缓慢且滞后,但视频继续播放没有问题。它也适用于 MacOS 上的 safari,因此这似乎是 Chrome MacOS-only 问题。
【问题讨论】:
-
我尝试了几次(Win10 上的 Chrome),但它并没有一直这样。有时它不显示缓冲,有时仅在第一次转换时显示。
-
当我测试并根据您和 zer00nes 的响应时,它似乎不会在 Windows 上发生,但它确实发生在多台 Mac 上。
标签: javascript macos google-chrome html5-video css-transitions