gpt4 book ai didi

javascript - HTML5 和 Javascript 仅在可见时播放视频

转载 作者:技术小花猫 更新时间:2023-10-29 12:28:26 24 4
gpt4 key购买 nike

我有兴趣设置一个包含多个视频剪辑的 HTML 页面,以便每个视频剪辑仅在可见时播放,然后在不可见时暂停。

我找到了 this great example关于如何用一个剪辑实现这一点,但我一直无法修改代码以使用多个剪辑。也许我需要将这段代码转换成一个函数以便于重用?

这是我目前所拥有的(上面链接的 JS Bin 修改了 2 个剪辑而不是一个)。

此代码似乎只适用于两个剪辑之一。

<!DOCTYPE html>
<html>
<!-- Created using jsbin.com Source can be edited via http://jsbin.com/ocupor/1/edit
-->
<head>
<meta charset=utf-8 />
<title>JS Bin</title>
<style>
#right {
position: absolute;
top: 2000px;
}
#video1 {
position: absolute;
left: 2000px;
top: 2000px;
}
#video2 {
position: absolute;
left: 2000px;
top: 3000px;
}

</style>

<style id="jsbin-css">
</style>
</head>
#
<body style="width: 4000px; height: 4000px;">
<div id="info"></div>
<div id="down">
scroll down please...
</div>
<div id="right">
scroll right please...
</div>
<video id="video1">
<source src="http://video-js.zencoder.com/oceans-clip.mp4"/>

</video>
<script>
var video = document.getElementById('video1'), fraction = 0.8;

function checkScroll() {
var x = video.offsetLeft, y = video.offsetTop, w = video.offsetWidth, h = video.offsetHeight, r = x + w, //right
b = y + h, //bottom
visibleX, visibleY, visible;

visibleX = Math.max(0, Math.min(w, window.pageXOffset + window.innerWidth - x, r - window.pageXOffset));
visibleY = Math.max(0, Math.min(h, window.pageYOffset + window.innerHeight - y, b - window.pageYOffset));

visible = visibleX * visibleY / (w * h);

if (visible > fraction) {
video.play();
} else {
video.pause();
}
}

checkScroll();
window.addEventListener('scroll', checkScroll, false);
window.addEventListener('resize', checkScroll, false);
</script>

<video id="video2">
<source src="http://video-js.zencoder.com/oceans-clip.mp4"/>

</video>
<script>
var video = document.getElementById('video2'), fraction = 0.8;

function checkScroll() {
var x = video.offsetLeft, y = video.offsetTop, w = video.offsetWidth, h = video.offsetHeight, r = x + w, //right
b = y + h, //bottom
visibleX, visibleY, visible;

visibleX = Math.max(0, Math.min(w, window.pageXOffset + window.innerWidth - x, r - window.pageXOffset));
visibleY = Math.max(0, Math.min(h, window.pageYOffset + window.innerHeight - y, b - window.pageYOffset));

visible = visibleX * visibleY / (w * h);

if (visible > fraction) {
video.play();
} else {
video.pause();
}
} checkScroll();
window.addEventListener('scroll', checkScroll, false);
window.addEventListener('resize', checkScroll, false);

</script>

</body>
</html>

最佳答案

使用 isInViewport插件和 jQuery ,这是我的任务代码

$('video').each(function(){
if ($(this).is(":in-viewport")) {
$(this)[0].play();
} else {
$(this)[0].pause();
}
})

关于javascript - HTML5 和 Javascript 仅在可见时播放视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21163756/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com