2013-08-07 30 views
6

Tôi có jQuery hình ảnh động mà xếp hàng cho một yếu tố duy nhất:jQuery hoạt hình hàng đợi với thông thường giảm bớt

var el = $('.elem'); 

el.animate({ 
     width: 120 
    }, 
    600, 
    'easeInOutQuint' 
).animate({ 
     width: 90 
    }, 
    300, 
    'easeInOutQuint' 
).animate({ 
     width: 100 
    }, 
    100, 
    'easeInOutQuint' 
); 

3 đếm hoạt hình như 1 hoạt hình chính, chỉ cần xích. Phải mất 1000ms để chạy và tôi muốn sử dụng trong ví dụ của tôi cho hoạt ảnh đầu tiên 60% lần đầu tiên giảm bớt, sau đó giảm bớt 30% tiếp theo được sử dụng trong hoạt ảnh thứ hai và kết thúc với 10% giảm giá cuối cùng.

Có cách nào để làm giảm bớt giá trị toàn cầu cho các hoạt ảnh được xếp hàng này không?

+2

Tôi không hiểu câu hỏi. Bạn có muốn tránh việc gõ nhẹ vào mọi lúc không? Bạn chỉ có thể lưu trữ nó trong một biến và sử dụng nó. Nếu điều đó không đúng, bạn muốn đạt được điều gì? – OptimusCrime

+0

Vui lòng kiểm tra nhận xét của tôi về câu trả lời @sza, điều đó sẽ xóa câu hỏi này. –

Trả lời

7

Nếu tôi hiểu câu hỏi của bạn một cách chính xác, có thể bạn có thể bọc logic trong một chức năng để bạn có thể vượt qua trong thời gian và tái sử dụng các hình ảnh động xích như thế này:

var el = $('.elem'); 

var ease = function(elem, duration) { 
    elem 
    .animate({width: 120}, 0.6 * duration, 'easeInOutQuint') 
    .animate({width: 90}, 0.3 * duration, 'easeInOutQuint') 
    .animate({width: 100}, 0.1 * duration, 'easeInOutQuint'); 
} 

ease(el, 1000); 
+0

Ah, điều đó có ý nghĩa. Tôi không hiểu câu hỏi chút nào. Nhưng gọi tốt. 1 cho giải pháp tốt đẹp! – OptimusCrime

+0

Vâng như thế này chắc chắn! – Seano666

+0

Đây là mã của bạn trong jsfiddle: http://jsfiddle.net/sAJDf/ mỗi phần cây của hoạt ảnh sử dụng cùng một giảm bớt, nhưng không phải là một nới lỏng phổ biến. Ví dụ của bạn sử dụng http://easings.net/#easeInOutQuint (xem sơ đồ nới lỏng) hoạt ảnh này trên mỗi trường hợp hoạt ảnh của bạn. Vì vậy, mỗi 3 hình ảnh động trong và ngoài một phần là chậm và phá vỡ sự năng động của nhóm hoạt hình. Tôi cần một sự nới lỏng toàn cầu cho ba hoạt hình này. Nó sẽ là một cái gì đó giống như, hoạt hình đầu tiên easInQuint, thứ hai là một tuyến tính với thời gian ngắn hơn và sau đó là một easyOutQuint. Bạn có thấy sự khác biệt không? http://jsfiddle.net/jMAjw/ –

2

phương pháp khác để làm cho nó như là plugin. Với Fiddle

(function ($) { 
    $.fn.ease = function(options) { 
     var settings = $.extend({ 
      // These are the defaults. 
      style: "swing", 
      duration : 1000 
     }, options); 

     return this.each(function(){ 
      $(this) 
      .animate({width: 120}, 0.6 * settings.duration, settings.style) 
      .animate({width: 90}, 0.3 * settings.duration, settings.style) 
      .animate({width: 100}, 0.1 * settings.duration, settings.style); 
     }); 
    }; 
}(jQuery)); 

sử dụng html: <span>This is test line to to work on animate plugin ease</span> js: $(document).ready(function(){ $('span').ease() });

có thể cung cấp nguyên liệu đầu vào quá như $(element).ease({duration:2000});

+0

Vui lòng kiểm tra nhận xét của tôi về câu trả lời @sza. –

1
The simplest way to do this is keep it nested like: 

$("#clickme").click(function() { 
    $("#book").animate({ 
    width: "140px" 

    }, 5000, "", function() { 
     $("#note").animate({ 
      width: "100px"  
      }, 4000, "", function() { 
       $("#note2").animate({ 
        width: "60px" 

        }, 2000, "", function() {  
       }) 
     }) 
    }) 
}); 
+0

Đây chỉ là một ví dụ tôi đã sử dụng trước đây .... bạn cũng có thể thử với phương thức này – Anup

+0

Vui lòng kiểm tra nhận xét của tôi về câu trả lời @sza. –

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