2012-05-03 35 views
6

Tôi đang sử dụng plugin jQuery Reel tuyệt vời (http://jquery.vostrel.cz/reel) cho một dự án. Tôi muốn liên kết với sự kiện cuộn cửa sổ, vì vậy khi người dùng cuộn xuống trang, plugin sẽ tiến lên 1 khung cho biết mỗi cuộn 10px, nếu người dùng cuộn lên hoạt ảnh sẽ bị đảo ngược.Sự kiện cuộn cửa sổ jQuery. Đối với mỗi XX pixel, hãy cuộn

Plugin có phương pháp tôi có thể chuyển giá trị cho không có sự cố và tôi biết cách liên kết với sự kiện cuộn cửa sổ. Điều tôi đang đấu tranh là điều cuối cùng.

Làm cách nào để sử dụng jQuery/JavaScript để nói cho mỗi 10 pixel được cuộn trong bất kỳ hướng dọc nào trước 1 khung hình trong hoạt ảnh? Tôi biết tôi có thể lưu trữ các cửa sổ di chuyển trong một biến nhưng tôi không chắc chắn làm thế nào để nói mỗi khi nó chạm một bội số của 10 trước một khung.

Rất cám ơn trước.

EDIT

Nhờ sự giúp đỡ của người dùng bên dưới, tôi đã tìm ra giải pháp. Như sau:

$(window).scroll(function() 
{ 
    windowScrollCount = $(this).scrollTop(); 
    animationFrame  = Math.round(windowScrollCount/100); 
}); 

Vì vậy, ở đây tôi nhận được khoảng cách cuộn trong windowScrollCount, dịch nó vào khung hình trong animationFrame và đặt nó trở lại với .reel ("khung", animationFrame); Tôi thực sự làm điều này cho mỗi 100 khung hình như mỗi 10 là để nhanh chóng.

Trả lời

5

Nhờ giúp đỡ của codef0rmer và noShowP tôi làm việc ra một giải pháp. Như sau:

$(window).scroll(function() 
{ 
    windowScrollCount = $(this).scrollTop(); 
    animationFrame  = Math.round(windowScrollCount/100); 
}); 

Vì vậy, ở đây tôi nhận được khoảng cách cuộn trong windowScrollCount, dịch nó vào khung hình trong animationFrame và đặt nó trở lại với .reel ("khung", animationFrame); Tôi thực sự làm điều này cho mỗi 100 khung hình như mỗi 10 là để nhanh chóng.

1

Bạn có thể có thể có một yếu tố dính để phía trên cùng của trang của bạn,

position: fixed; top 0; trái: 0;

(ẩn nếu bạn muốn).

Và sau đó khi bạn đang di chuyển, bạn có thể theo dõi nó bù đắp:

$('element').offset().top 

Sau đó bạn có thể thấy cách xa xuống phía dưới trang bạn đã cuộn, vì vậy mỗi khi họ di chuyển xem những gì giá trị hàng đầu của nó là và các sự kiện kích hoạt một cách thích hợp?

EDIT:

Tôi đã thiết lập một JSfiddle nhỏ khi bắt đầu những gì tôi nghĩ bạn cần.

http://jsfiddle.net/qJhRz/3/

Im chỉ tính khung bạn cần phải vào và lưu trữ trong một biến. Có gì giống như những gì bạn đang tìm kiếm không?

+0

Cảm ơn bạn đã trả lời nhưng đó không phải điều tôi mong muốn. Tôi đã cập nhật đoạn cuối cùng ở trên để làm cho yêu cầu rõ ràng hơn. – mtwallet

+0

Tôi chưa bao giờ sử dụng reel trước đây, bạn đã biết làm thế nào để làm cho nó tiến một khung và bạn chỉ cần biết làm thế nào để gọi những sự kiện mỗi khi 10px được cuộn? – noShowP

+0

Tôi nghĩ rằng bạn đang ở trên các dòng bên phải ở đây tôi có thể tham khảo số khung trong một biến. Tôi chỉ không hiểu làm thế nào để khi scrollTop hits 10 sau đó 20 sau đó 30 vv trước một khung (hoặc thêm một đến biến khung). Tôi bắt đầu hiểu ngay bây giờ nhờ sự giúp đỡ – mtwallet

3

Nếu tôi sai thì bạn có thể muốn điều này:

var jump = 500; // consider this is your 10px 
window.scrollHeight = 0; 
$(window).scroll(function() { 
    console.log($(this).scrollTop()); 
    var diff = $(this).scrollTop() - window.scrollHeight; 
    if (diff >= jump) { 
     window.scrollHeight = $(this).scrollTop(); 
     console.log('reload frame'); 
    } 
}); 

Demo: http://jsfiddle.net/Dyd6h/

+0

codef0rmer cảm ơn bạn đã trả lời. Đó không phải là những gì tôi muốn mặc dù tôi bắt đầu hiểu ngay bây giờ làm thế nào tôi có thể đạt được nó. Về cơ bản mỗi lần scrollTop chạm 10 rồi 20 thì 30 trước một khung hình. – mtwallet

+0

codef0rmer cảm ơn sự giúp đỡ, tôi đã làm việc nó ra xin vui lòng xem câu trả lời của tôi ở trên. – mtwallet

+0

@mtwallet: Tuyệt! Vui vì nó hoạt động. – codef0rmer

Các vấn đề liên quan