2012-11-16 29 views
9

マウスホイールで上下にスクロールすると、ビデオを前後に再生するWebページを作成できます。 HTML5とおそらくJavaScriptを介して考えられるようです。このようなことのためのどんな方向性が役に立つでしょう。html5ビデオをマウスホイールでスクロールして再生する

+0

作るために私の最後のいくつかの改造は、あなたが[この]のようなものを意味するか(http://a-class.mercedes-benz.com/nl/nl /)? – avb

+0

はい、正確です。彼らのコードに浸り、それを私のために働かせることができるかどうか見てみましょう。 –

+0

上記のコメントが人々の貢献を妨げないようにしてください。私はまだ助けてください。サイトには、正確に何がうまくいくかを見つけるためのコードがたくさんあります。 –

答えて

0

おそらくこの

$(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(); 
}); 
5
のようなものは、すべての回でビデオを一時停止

。一定間隔でスクロール位置を取得し、ビデオをスクロール位置にシークします。ページローダーエフェクトを使用してビデオを完全にバッファリングすることを推奨します。私はこれを使用してい

full code

// 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); 
+0

こんにちは、私はそれが長いショットだと知っていますが、私のプロジェクトにあなたの答えを使用しており、私はこれを達成したいと思います:http://stackoverflow.com/questions/26756362/html5-video-pause-while-スクロール可能ですか? – Mauro74

0

。それは完璧ではありませんが、それはあなたを助けるはずです。

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(); 
}); 
1

私は、これは古い質問ですけど、私は他の日にそれを偶然見つけ及びthe answer aboveが、私はこの効果を達成するために少しjQuery pluginを書く助けました。

スクロールでは、ビデオ要素のウィンドウに対する位置を計算し、それを使ってビデオの現在の時間を計算しました。

ただし、ビデオの現在時刻を更新するためにsetTimeout/setIntervalを使用する代わりに、request animation frameを使用しました。リクエストアニメーションフレームは、ブラウザが準備ができていなくても実行されるsetIntervalを使用する代わりに、ビデオをレンダリングします。

in all modern browsers except Opera Miniサポート
var renderLoop = function(){ 
    requestAnimationFrame(function(){ 
    vid.currentTime = window.pageYOffset/400; 
    renderLoop(); 
    }); 
}; 
renderLoop(); 

:上記の例にこれを適用する

+0

これは幻想的です。私が達成したいと思っていたことと、上司がgithubで参照したのと同じページからインスピレーションを得ました。ありがとう – HelloSpeakman

0

それよりスムーズ

// 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); 

http://codepen.io/anon/pen/qORmee

関連する問題