2013-03-19 16 views
8

私は<section>のn個の番号をページに持っています。それぞれには 'page1'、 'page2'などのIDが提供されています...現在の位置にdivのIDを取得する

2つのボタンは前後に2つのボタンがあります。 [前へ]を押すと、前の<section>にスクロールされます。次のボタンを押すと次の<section>と同様に表示されます。

しかし、今問題は、ユーザーがスクロールバーを使用してページをスクロールしたときです。どのユーザーが表示しているのですか。<section>

+1

この質問あなたを助けるかもしれません:http://stackoverflow.com/questions/2940006/what-is-scrolltop-and-scrollheight。スクロールの差別化を使用して、ページ上でユーザーがどこにいるかを調べることができます。良い質問ですが、コードを投稿して私たちを始めてください。 – George

+1

スクロールオフセットを取得し、セクションのオフセットと比較します。 –

+0

誰もが言ったように、スクロール位置を使用し、それをセクションのオフセットと比較することが、道のりです。これを実際に見てみると、ルックスルーはhttp://twitter.github.com/bootstrap/javascript.html(そしてそれがナビゲーション状態をどのように扱うか)のブートストラップで見ることができます。これは、「スクロールバー」として組み込まれています。この回答は、この回答からリンクされています。http://stackoverflow.com/questions/13134013/how-to-use-bootstrap-scroll-spy –

答えて

3

あなたのセクションがある場合は、私が見つけるためにこれを使用しています「ビューポート」で確認することができます。

function isTotallyInViewPort($entry){ 
    var windowScrollTop = $(window).scrollTop(); 
    var windowHeight = $(window).height(); 
    var windowVisibleBottom = windowScrollTop + windowHeight; 
    var entryTop = $entry.offset().top; 
    var entryOuterHeight = $entry.outerHeight(); 
    var entryVisibleBottom = entryTop + entryOuterHeight; 

    var isInView = windowScrollTop < (entryTop) < (windowVisibleBottom); 
    if(!isInView) return false; 

    var isCompleteInView = (entryVisibleBottom) < (windowVisibleBottom); 
    return isCompleteInView; 
} 

あなたは部品が示されている場合だけかどうかを確認する関数を作成し、検出したい場合現在のビューがセクションの位置と重なっています。

あなたは$(ウィンドウ).on( "スクロール")

編集にそれを結合することができる:私はあなたの要素は(まだテストしていない)に示されている場合、これは検出されるべきだと思う

function isPartlyInViewPort($entry){ 
    var windowScrollTop = $(window).scrollTop(); 
    var windowHeight = $(window).height(); 
    var windowVisibleBottom = windowScrollTop + windowHeight; 
    var entryTop = $entry.offset().top; 
    var entryOuterHeight = $entry.outerHeight(); 
    var entryVisibleBottom = entryTop + entryOuterHeight; 

    var isAboveViewPort = entryVisibleBottom < windowScrollTop; 
    var isBelowViewPort = windowVisibleBottom < entryTop; 

    return !(isAboveViewPort || isBelowViewPort); 
} 
関連する問題