2011-07-17 28 views
5

Tôi đang gặp khó khăn khi tìm hiểu lý do hoạt ảnh của tôi nhảy. Bất kỳ ý tưởng?Nhảy trong hoạt ảnh chiều rộng của jQuery

http://jsfiddle.net/9F5DK/5/

jQuery(document).ready(function() { 

// Animate the single page nav 
    jQuery("a#post-nav-next").hover(

      function(){ 

      jQuery("a#post-nav-next span").stop(true, true).animate({width: "toggle", opacity: "toggle"}); 

     } 
    ); 
}); 
+1

Theo dõi. Dường như nó được gây ra bởi các văn bản reflowing như span đóng. Làm thế nào để sửa lỗi này? Có lẽ giấu nó ở gần? – Niels

+0

Hmm ... vẫn không hoạt động [liên kết] (http://jsfiddle.net/9F5DK/6/) với tràn: ẩn – Niels

+0

phỏng đoán của tôi là vì bạn đang tạo hoạt ảnh cho văn bản chứ không phải vùng chứa xung quanh. nhưng tôi cũng thích câu trả lời. tôi sẽ đợi ai đó thông minh hơn tôi để trả lời. – kasdega

Trả lời

3

OK Tôi đã dành chút thời gian để tìm hiểu điều này. Thông thường tôi không thích thay đổi javascript html/jquery gốc nhiều và nếu điều này không làm việc cho bạn thì tôi xin lỗi. Đây là một JSFiddle mà những gì bạn muốn tôi nghĩ ...

http://jsfiddle.net/LqHwk/1/

Một điều tốt đẹp về vấn đề này thiết lập là bạn có thể thêm bao nhiêu

<div class="post-nav-next"> 

như bạn muốn bên trong wrapper và tất cả chúng sẽ hoạt động giống nhau

BTW Tôi khuyên bạn nên sử dụng plugin jquery hoverIntent.

+0

TUYỆT VỜI !!!! Cảm ơn kasdega! Tôi chỉ mới bắt đầu nhìn vào điều này một lần nữa và đó là một giải pháp tốt hơn so với tôi đã nhận :-) Tôi thích hoverintent quá – Niels

2

vấn đề tôi thấy:

Thiết lập một chiều cao hoặc chiều rộng trên một inline <a> hoặc <span> thẻ trong CSS của bạn hoặc hình ảnh động của bạn. Đọc this article cho các vấn đề với cố gắng đặt chiều cao hoặc chiều rộng trên thẻ nội tuyến. Điều này áp dụng cho cả CSS và hoạt ảnh của bạn. Nếu bạn muốn animate chiều rộng, tôi nghĩ rằng bạn sẽ cần phải làm điều đó trên một phần tử khối.

Dường như với tôi rằng hoạt ảnh có thể bị nhầm lẫn bởi chuyển đổi cho chiều rộng và độ mờ đục. Có lẽ bạn nên tốt hơn chỉ định cả hai callbacks cho di chuột và xác định các hình ảnh động bắt đầu và điểm dừng trực tiếp hơn là để lại phương pháp chuyển đổi để có để tìm ra những gì bắt đầu và điểm dừng nên được.

Ví dụ, không làm lại HTML để chặn các phần tử (mà tôi nghĩ là cần thiết để tạo độ tin cậy cho chiều rộng), đây là một hoạt ảnh mượt mà trên chỉ độ mờ. Tôi đã đặt điểm bắt đầu trong CSS thành độ mờ bắt đầu mong muốn và tôi đã ngừng sử dụng chuyển đổi để đặt hoạt ảnh và đang thiết lập rõ ràng. Tôi không chắc chắn điều này là cần thiết, nhưng nó sures loại bỏ sự mơ hồ từ những gì chuyển đổi sẽ cố gắng để đoán những gì bạn muốn: http://jsfiddle.net/jfriend00/r2cdn/ (opacity hoạt hình chỉ trong jsfiddle này, cả hai hình ảnh động bao gồm trong jsfiddle dưới đây).

jQuery(document).ready(function() { 

// Animate the single page nav 
    jQuery("a#post-nav-next").hover(function(){ 
      jQuery("a#post-nav-next span").stop(true, true).animate({opacity: "1.0"}); 
     }, function() { 
      jQuery("a#post-nav-next span").stop(true, true).animate({opacity: "0"}); 
     } 
    ); 
}); 

Để chuyển đổi chiều rộng, bạn muốn chuyển giữa hai trạng thái nào? Điều đó không rõ ràng với tôi như một con người và có lẽ không rõ ràng với jQuery.toggle(). Nếu, những gì bạn đang cố gắng làm là animate padding bên phải, sau đó có lẽ bạn nên chỉ làm điều đó trực tiếp.

Nếu tôi đặt trong một hình động trực tiếp cho đệm và thay đổi giá trị bắt đầu trong CSS, nó bắt đầu hoạt hình trơn tru. Tôi không chắc chắn 100% tôi biết bạn đang tìm kiếm hoạt ảnh nào, nhưng đây là hướng bạn có thể đi: http://jsfiddle.net/jfriend00/PE4qQ/.

jQuery(document).ready(function() { 

// Animate the single page nav 
    jQuery("a#post-nav-next").hover(function(){ 
     jQuery("a#post-nav-next span").stop(true, true).animate({"opacity": "1.0", "padding-right": "100px"}); 
     }, function() { 
      jQuery("a#post-nav-next span").stop(true, true).animate({"opacity": "0", "padding-right": "0px"}); 
     } 
    ); 
}); 
+0

Tôi đoán trạng thái độ rộng phải là 0 và kích thước đầy đủ (ví dụ: mở rộng để chứa văn bản. Tôi đoán tôi có thể làm quá rộng chiều rộng của (vì nó được đặt để được hiển thị: khối) từ 100px (ví dụ) với chiều rộng đầy đủ ... nhưng làm thế nào ??? – Niels

+0

Xem các nhận xét bổ sung của tôi về hoạt ảnh đệm. Một số yếu tố nội tuyến không thích có chiều rộng buộc. Bạn có thể làm điều đó với các phần tử khối như phần tử div hoặc inline-block Trong trường hợp đó, bạn sẽ có một trạng thái ban đầu với độ rộng cố định và trạng thái cuối cùng với độ rộng tự động. "chiều rộng") - Tôi nghĩ rằng bạn phải thiết lập rõ ràng hai trạng thái – jfriend00

+0

Vâng, tất cả các điểm tốt.Tôi sẽ để lại điều này bây giờ, và đi ngủ (1:30 sáng ở Melbourne). sẽ kiểm tra lại vào buổi sáng. zzzzzzzzzzz – Niels

0

Sau một thời gian, tôi quay lại để có một hoạt động khác.Hiệu quả cuối cùng có thể được nhìn thấy ở đây:

http://jsfiddle.net/Niels/zrru5/1/

Một số điều quan trọng cần chú ý những điều sau đây:

  1. các overflow:hidden quy tắc ẩn văn bản như nó chứa khá sôi động.
  2. white-space: nowrap; trên span ngăn chỉnh lại văn bản.
  3. div được để ở trạng thái mặc định khi tải và độ rộng được lưu trữ. Chiều rộng đó sau đó được áp dụng lại trong hoạt ảnh di chuột.

Một người nào đó giỏi hơn tôi sẽ làm cho js súc tích hơn, nhưng bạn có nó. Một hiệu ứng tốt đẹp cho điều hướng bài đăng.

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