2013-08-21 2 views
-1
  • Как определить, прокручивает ли пользователь 50% экрана с помощью jQuery ?. (Здесь я могу сказать, если она прокручивается 50px)
  • Затем, анимировать и перейти к # Секунда или, что то же самое, топ 100% (это, кажется, что это воодушевляет, но что-то отдалять происходит)

Вот пример: http://jsfiddle.net/NH6Km/2/scroll% экрана

Jquery:

$(function(){ 
$(window).scroll(function() { 
    if ($(window).scrollTop() > 50) { 
    ('body,html').animate({ scrollTop:    
    $('#second').offset().top }, 1500); 
    } 
});  
}) 

HTML:

<div id="first"></div> 
<div id="second"></div> 

CSS:

#first{ 
    position:absolute; 
    width:100%; height:100%; 
    background:blue; 
} 
#second{ 
    position:absolute; 
    top:100%; 
    width:100%; height:100%; 
    background:yellow; 
} 
+0

Итак, когда пользователь начинает прокручивать, вы хотите прервать их прокрутку и прокрутить их до следующего div. верный? –

+0

Я пытаюсь оживить следующий/prev div, если он посередине. Может быть, когда пользователь начинает прокручивать или, может быть, лучше, когда он закончит прокрутку? – Nrc

+0

Откуда вы знаете, посередине? (простой ответ). Обнаруживать, когда свиток останавливается, затем, если он посередине, прокрутите его до ближайшего. –

ответ

0

Как @thecodedestroyer сказал, вы можете использовать событие прокрутки, чтобы сделать что-то вроде этого :

var currentDiv = "#first"; 
var divArray = ["#first", "#second", "#third", "#fourth"]; 

$(window).on("scroll", function (e) { 
    var ix = divArray.indexOf(currentDiv); 
    if (ix >= 0) { 
     if (window.pageYOffset > $(currentDiv).offset().top) { 
      currentDiv = divArray[(ix + 1) % currentDiv.length]; 
     } else if (window.pageYOffset < $(currentDiv).offset().top) { 
      currentDiv = divArray[(ix - 1) % currentDiv.length]; 
     } 
     $("body, html").animate({ 
      scrollTop: $(currentDiv).offset().top 
     }, 0); 
     e.preventDefault(); 
     return false; 
    } 
}); 

Здесь тест: http://jsfiddle.net/cxJQE/