我希望能够制作一个网页,当用户使用鼠标滚轮向上或向下滚动页面时,视频可以前后播放。这似乎可以通过HTML5和可能的JavaScript实现。希望能提供任何相关的指导。
我希望能够制作一个网页,当用户使用鼠标滚轮向上或向下滚动页面时,视频可以前后播放。这似乎可以通过HTML5和可能的JavaScript实现。希望能提供任何相关的指导。
请始终暂停视频。定期获取滚动位置并使视频跳转到该滚动位置。建议使用任何页面加载器效果来完全缓冲视频。
// select video element
var vid = document.getElementById('v0');
//var vid = $('#v0')[0]; // jquery option
// pause video on load
vid.pause();
// pause video on document scroll (stops autoplay once scroll started)
window.onscroll = function(){
vid.pause();
};
// refresh video frames on interval for smoother playback
setInterval(function(){
vid.currentTime = window.pageYOffset/400;
}, 40);
var renderLoop = function(){
requestAnimationFrame( function(){
vid.currentTime = window.pageYOffset/400;
renderLoop();
});
};
renderLoop();
// select video element
var vid = document.getElementById('v0');
//var vid = $('#v0')[0]; // jquery option
// pause video on load
vid.pause();
// pause video on document scroll (stops autoplay once scroll started)
window.onscroll = function(){
vid.pause();
};
// refresh video frames on interval for smoother playback
setInterval(function(){
TweenMax.to(vid,2,{currentTime:window.pageYOffset/400});
}, 40);
可能是这样的
$(document).mousewheel(function(event, delta, deltaX, deltaY){
if (deltaY > 0) {
$(".video-element").get(0).playbackRate = -1;
} else {
$(".video-element").get(0).playbackRate = 1;
}
event.preventDefault();
});
我在使用这个。它不是完美的,但应该能帮到你。
var videoScrollTop = $(document).scrollTop();
$(document).scroll(function() {
var vid = $('#video')[0];
if(videoScrollTop < $(document).scrollTop()){
vid.currentTime += 0.081;
} else {
vid.currentTime -= 0.081;
}
videoScrollTop = $(document).scrollTop();
});
我知道这是一个非常老的帖子,但我想提供这个经过改进的版本,它可以扩展到多个元素,但关键是当元素不在页面顶部时也能正常工作:
playVideoOnScroll($('#myVideoContainer video'));
function playVideoOnScroll(element) {
var vid = element[0]; // select video element
var playbackConst = 3; // lower numbers = slower playback
var startingYOffset = element.offset().top - $(window).height();
vid.pause(); // pause video on load
// pause video on document scroll (stops autoplay once scroll started)
window.onscroll = function(){
vid.pause();
};
// refresh video frames on interval for smoother playback
setInterval(function(){
vid.currentTime = (window.pageYOffset-startingYOffset)/($(window).height()/playbackConst);
}, 40);
}