2013-03-19 27 views
8

Bir sayfada n sayısı <section> var. Her biri 'page1', 'page2' gibi bir kimlik ile sağlanır ...Geçerli konumdan div'un kimliğini alma

Üstte 2 düğmeyi Önceki ve Sonraki olarak söyleyin. Önceki düğmesine basıldığında, Önceki <section>'a kaydırılacaktır. Sonraki Düğmeye basılarak bir sonraki <section>'a benzer.

Ama şimdi sorun, kullanıcının kaydırma çubuğunu kullanarak sayfayı kaydırmasıdır, kullanıcının hangi <section> görüntülediğini nasıl tespit edebilirim?

+1

Bu soru:

Eğer

düzenlemek ("kaydırma") $ için (pencere) .sistem bağlamak olabilir size yardımcı olabilir: http://stackoverflow.com/questions/2940006/what-is-scrolltop-and-scrollheight. Kullanıcının sayfada olduğu yerde çalışmak için kaydırma farklılaştırması kullanabilir misiniz? Bu iyi bir soru ama başlamanız için kodunuzu gönderin. – George

+1

Kaydırma ofsetini alın ve bölümlerin ofsetiyle karşılaştırın. –

+0

Herkesin söylediği gibi, kaydırma konumunu kullanarak ve bölümlerin ofsetiyle karşılaştırmak, gidilecek yoldur. Bir göz atmak için bu eylemin bir örneği, http://twitter.github.com/bootstrap/javascript.html adresindeki bootstrap'te görülebilir (ve gezinme durumunu nasıl ele alır). Bu 'scrollspy' olarak inşa edilmiştir, bu eylemin bir kemanı bu cevaptan bağlanmıştır: http://stackoverflow.com/questions/13134013/how-to-use-bootstrap-scroll-spy –

cevap

3

senin bölüm olup olmadığını, ben öğrenmek için bu kullanıyorum "ViewPort'un" kontrol edilebilir:

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; 
} 

Eğer PARÇA gösteriliyorsa sadece istemediğini kontrol eden bir işlevi oluşturun, algılamak istiyorsanız Geçerli görünüm, bölümünüzün konumuyla örtüşüyor. ben senin elemanları gösteriliyorsa bu (henüz test edilmemiş) algılamalıdır düşünüyorum

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); 
} 
İlgili konular