$('#slider').anythingSlider({
// Callback when the plugin finished initializing
onInitialized: function(e, slider) {
var time = 1000, // allow movement if < 1000 ms (1 sec)
range = 50, // swipe movement of 50 pixels triggers the slider
x = 0, t = 0, touch = "ontouchend" in document,
st = (touch) ? 'touchstart' : 'mousedown',
mv = (touch) ? 'touchmove' : 'mousemove',
en = (touch) ? 'touchend' : 'mouseup';
$('<div class="swipe-overlay"></div>')
.appendTo(slider.$window)
.bind(st, function(e){
// prevent image drag (Firefox)
e.preventDefault();
t = (new Date()).getTime();
x = e.originalEvent.touches ? e.originalEvent.touches[0].pageX : e.pageX;
})
.bind(en, function(e){
t = 0; x = 0;
})
.bind(mv, function(e){
e.preventDefault();
var newx = e.originalEvent.touches ? e.originalEvent.touches[0].pageX : e.pageX,
r = (x === 0) ? 0 : Math.abs(newx - x),
// allow if movement < 1 sec
ct = (new Date()).getTime();
if (t !== 0 && ct - t < time && r > range) {
if (newx < x) { slider.goForward(); }
if (newx > x) { slider.goBack(); }
t = 0; x = 0;
}
});
}
});
The problem is YouTube videos are actually iframes with HTML5 and embedded video inside. So, swiping across the video doesn't register with the content outside of the iframe. The easiest solution would be to place an overlay over the video and have it cover just the video. The problem with this is that you can't tap on the video itself to make it play, you have to use the controls.
In this updated demo, the overlay covers the video and leaves the controls visible (add a background: #f00; to the swipe overlay css to see it). The controls are 40 pixels tall so you'll see the height of the overlay takes this into account.
Here is the css (the slider is 300 x 200 in size for this demo):
发布评论
评论(1)
问题是 YouTube 视频实际上是带有 HTML5 和嵌入视频的 iframe。因此,在视频上滑动不会注册 iframe 之外的内容。最简单的解决方案是在视频上放置覆盖层并使其仅覆盖视频。这样做的问题是你无法点击视频本身来播放它,你必须使用控件。
在这个更新的演示中,覆盖层覆盖了视频并使控件可见(添加一个
background: #f00;
滑动覆盖层 css 即可看到它)。控件的高度为 40 像素,因此您会看到叠加层的高度已考虑到这一点。这是 css(此演示中滑块的大小为 300 x 200):
这是更新的初始化代码:
The problem is YouTube videos are actually iframes with HTML5 and embedded video inside. So, swiping across the video doesn't register with the content outside of the iframe. The easiest solution would be to place an overlay over the video and have it cover just the video. The problem with this is that you can't tap on the video itself to make it play, you have to use the controls.
In this updated demo, the overlay covers the video and leaves the controls visible (add a
background: #f00;
to the swipe overlay css to see it). The controls are 40 pixels tall so you'll see the height of the overlay takes this into account.Here is the css (the slider is 300 x 200 in size for this demo):
and this is the updated initialization code: