0

在此页面http://kimcolemanprojects.com/djangolive_1.html上有五个视频。

当您单击每个视频时,下一个视频会向上滚动到 jQuery 视图中。

由于这个 jQuery 效果,我不得不禁用视频控件。所以我决定在每个视频的左边放一个播放/暂停按钮。

但是,我现在需要一些帮助来制作一个脚本,该脚本将在每个新视频滚动到视图中时更改按钮。我有一段脚本可以在不同视频滚动进入视图时更改标题,这也在每个视频的左侧,请参阅下面的脚本。

$(window).load(function(){
// Scroll to titles on click
$('a').on('click', function() {
var target = $(this).attr('href');
$('html,body').animate({
scrollTop: $(target).offset().top
}, 'slow');
return false;
});
// jQuery `inView`-expression
$.extend($.expr[':'], {
inView: function(el) {
var width = $(el).width(),
height = $(el).height(),
offset = $(el).offset(),
vp_dimensions = {
height: $(window).height(),
width: $(window).width()
},
y_offset = (document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop),
x_offset = (document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft);
return (
offset.top < (y_offset + vp_dimensions.height) && offset.left < (x_offset + vp_dimensions.width) && (offset.top + height) > y_offset && (offset.left + width) > x_offset);
}
});
// Change the titles on scroll
$(window).scroll(function() {
$('li').each(function() {
var self = $(this),
title = self.find('video').attr('title');
if (self.is(':inView')) {
$('#title').find('h2').text(title);
}
});
}).scroll();
});

谢谢你的时间

安吉拉

4

1 回答 1

0

下面的代码实现了我想要的以及更多,它不仅使按钮与滚动到视图中的视频相对应,它还在滚动出视图时暂停视频,当视频播放完毕时,它会将下一个滚动到视图中并自动播放。感谢 jQuery 论坛上的 jakecigar。

$.extend($.expr[':'], { // jQuery `inView`-expression
inView: function (el) {
var width = $(el).width(),
height = $(el).height(),
offset = $(el).offset(),
vp_dimensions = {
height: $(window).height(),
width: $(window).width()
},
y_offset = (document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop),
x_offset = (document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft);
return(
offset.top < (y_offset + vp_dimensions.height) && offset.left < (x_offset + vp_dimensions.width) && (offset.top + height) > y_offset && (offset.left + width) > x_offset);
}
});
var video;
$(function (){
video=$('video:first').get(0)
$('a').on('click', function () {
var target = $(this).attr('href');
$('html,body').animate({
scrollTop: $(target).offset().top
}, 'slow')
return false;
});
$('video').on('ended',function(){
$(this).parents('a').click()
setTimeout(vidplay,1000)
})
});
$(window).scroll(function () {
$('video:not(:inView)').each(function () {
this.pause()
})
video = $('video:inView:last').get(0)
if(video) $('#title').find('h2').text(video.title)
}).scroll();
function vidplay() {
if(video.paused) {
video.play();
$('#play').text("||");
} else {
video.pause();
$('#play').text(">");
}
}
function percent(){
return (video.currentTime/video.duration*100).toFixed(0)+'%'
}
function restart() {
video.currentTime = 0;
}
function skip(value) {
video.currentTime += value;
} 
于 2012-12-29T13:57:24.043 回答