2013-02-16 45 views
27

Tôi đang tạo một trang web thị sai và tôi muốn làm cho trang cuộn mượt mà hơn với con lăn chuột để có trải nghiệm người dùng tốt hơn. Ví dụ tốt nhất tôi có thể nhận được là trang web này: http://www.milwaukeepolicenews.com/#menu=home-page Sẽ thật tuyệt nếu tôi có thể nhận được một thứ gì đó tương tự như trang web của tôi, thanh cuộn cuộn và cuộn thẳng đứng trơn tru.jquery vertical mousewheel smooth scrolling

Tôi nhận thấy họ đang sử dụng con lăn chuột của Brandon Aaron vốn rất nhẹ nhưng tôi chỉ là người mới bắt đầu và không thể tự làm việc.

Ngoài ra tôi nhận thấy điều này trong MPD-parallax.js của họ:

jQuery(window).mousewheel(function(event, delta, deltaX, deltaY){ 
     if(delta < 0) page.scrollTop(page.scrollTop() + 65); 
     else if(delta > 0) page.scrollTop(page.scrollTop() - 65); 
     return false; 
    }) 

Cảm ơn bạn!

EDIT

Tôi gần như ở đó. Hãy xem fiddle này: http://jsfiddle.net/gmelcul/cZuym/ Nó chỉ cần thêm một phương pháp nới lỏng để cuộn giống như trang web Cảnh sát Milwaukee.

+0

Hiện những gì bạn đã cố gắng cho đến nay - nó khó có thể đưa ra đề nghị khác. –

+0

Nó thực sự cần nới lỏng, nó hơi điên rồ trong Firefox và Chrome, nhưng kỳ lạ nó hoạt động rất tốt và mượt mà trong IE10. –

+0

Có thể trùng lặp: http://stackoverflow.com/questions/9142490/smooth-scrolling-easing-effect-with-mouse-wheel?lq=1 –

Trả lời

11

Dưới đây là hai jsfiddles - một với kịch bản và một không có nó, do đó bạn có thể so sánh:

JavaScript bằng jQuery mousewheel plugin:

$(document).ready(function() { 
    var page = $('#content'); // set to the main content of the page 
    $(window).mousewheel(function(event, delta, deltaX, deltaY){ 
     if (delta < 0) page.scrollTop(page.scrollTop() + 65); 
     else if (delta > 0) page.scrollTop(page.scrollTop() - 65); 
     return false; 
    }) 
}); 

So sánh cả hai. Từ những gì tôi có thể nói, kịch bản làm chậm bánh xe chuột vì vậy nó đòi hỏi phải quay về thể chất hơn để cuộn cùng khoảng cách như không có tập lệnh. Nó có thể cảm thấy mượt mà hơn vì cuộn chậm hơn (và nó thực sự mượt mà hơn vì nó có thể dễ dàng hơn trên thiết bị đồ họa).

+0

OK, cảm ơn bạn Cymen! –

+0

@gigimelcul Vui lòng chấp nhận nếu nó hoạt động cho bạn (dấu kiểm màu xanh lục)! – Cymen

+2

Bạn cũng có thể di chuyển bằng cách sử dụng các phím mũi tên (và nó sẽ thân thiện với người dùng hơn khi cuộn bằng các phím mũi tên cũng như bánh xe chuột). http://jsfiddle.net/aVvQF/4/ –

4

Khám phá skrollr. Đó là một plugin để tạo hiệu ứng thị sai. Nó có tùy chọn khi bạn khởi tạo các plugin để chuyển di chuyển mượt mà:

var s = skrollr.init({ 
    smoothScrolling: true, 
    smoothScrollingDuration: 1800 
}); 
+0

tìm kiếm một thời gian dài .... cảm ơn .... – Hareesh

+0

Điều này có vẻ đầy hứa hẹn. Cảm ơn bạn! – OMA

3

tôi thấy plugin này, nó có một số tùy chọn thoải mái và hoạt động trên tất cả các thiết bị lớn http://areaaperta.com/nicescroll/

+0

Nó không chỉ làm mịn quá trình cuộn. Nó cũng cho biết thêm một thanh cuộn tùy chỉnh đẹp cho trang. Nhược điểm: chậm hơn so với các triển khai đơn giản khác để cuộn trơn tru và cũng có kích thước nhỏ hơn một chút. – BlackPanther

+0

Không trơn tru chút nào. Nó làm cho trang rung khi bạn cuộn. Hoàn toàn khủng khiếp! –

4

hey tôi đã khác ressource đây mà thực sự là đơn giản để sử dụng smoothwheel

Nó cho phép hoạt ảnh cuộn trơn tru trên con lăn chuột trên mọi thiết bị và hoạt động hoàn hảo!

+0

Thật không may, không phải bản demo tại trang web SmoothWheel cũng như "bản trình diễn làm việc" mà bạn liên kết ở công việc cuối cùng trong Chrome 39. Việc di chuyển vẫn là bước nhảy thường xuyên khi di chuyển bánh xe. Thư viện "skrollr" được đề cập ở trên, mặt khác, hoạt động trong Chrome 39 – OMA

9

Tôi biết đó là một bài thực sự cũ, nhưng đây là một giải pháp tốt tôi đã thực hiện:

function handle(delta) { 
    var animationInterval = 20; //lower is faster 
    var scrollSpeed = 20; //lower is faster 

    if (end == null) { 
    end = $(window).scrollTop(); 
    } 
    end -= 20 * delta; 
    goUp = delta > 0; 

    if (interval == null) { 
    interval = setInterval(function() { 
     var scrollTop = $(window).scrollTop(); 
     var step = Math.round((end - scrollTop)/scrollSpeed); 
     if (scrollTop <= 0 || 
      scrollTop >= $(window).prop("scrollHeight") - $(window).height() || 
      goUp && step > -1 || 
      !goUp && step < 1) { 
     clearInterval(interval); 
     interval = null; 
     end = null; 
     } 
     $(window).scrollTop(scrollTop + step); 
    }, animationInterval); 
    } 
} 

thử nghiệm nó: http://jsfiddle.net/y4swj2ts/3/