Nếu bạn đang mở để sử dụng CSS3 kết hợp với jQuery, có lẽ phương pháp này có thể sử dụng một số cho bạn:
HTML
<div id="click-me">Rotate</div>
<div id="rotate-box"></div>
CSS
#rotate-box{
width:50px;
height:50px;
background:#222222;
}
@-moz-keyframes rotatebox /*--for firefox--*/{
from{
-moz-transform:rotate(0deg);
}
to{
-moz-transform:rotate(360deg);
}
}
@-webkit-keyframes rotatebox /*--for webkit--*/{
from{
-webkit-transform:rotate(0deg);
}
to{
-webkit-transform:rotate(360deg);
}
}
#click-me{
font-size:12px;
cursor:pointer;
padding:5px;
background:#888888;
}
Và giả định rằng các yếu tố trong câu hỏi là nghĩa vụ phải xoay theo một bấm vào một liên kết/div nút /, jQuery của bạn sẽ trông giống như thế này:
jQuery
$(document).ready(function(){
$('#click-me').click(function(){
$('#rotate-box').css({
//for firefox
"-moz-animation-name":"rotatebox",
"-moz-animation-duration":"0.8s",
"-moz-animation-iteration-count":"1",
"-moz-animation-fill-mode":"forwards",
//for safari & chrome
"-webkit-animation-name":"rotatebox",
"-webkit-animation-duration":"0.8s",
"-webkit-animation-iteration-count":"1",
"-webkit-animation-fill-mode" : "forwards",
});
});
});
Vì vậy, kể từ jQuery có nhưng để có thể hỗ trợ xoay (deg) trong .animate(), tôi đã đánh lừa bằng cách xác định trước các khung hình động trong CSS3 và gán nhãn hoặc số nhận dạng cho hoạt ảnh cụ thể đó. Trong ví dụ này, nhãn/số nhận dạng đó được xác định là rotatebox.
Điều gì xảy ra từ đây là thời điểm div được nhấp được nhấp vào, đoạn mã jQuery sẽ sử dụng .css() và gán các thuộc tính cần thiết vào phần tử xoay. Thời điểm những thuộc tính này được gán, sẽ có một cây cầu từ phần tử đến khung hình hoạt ảnh CSS3, do đó cho phép hoạt ảnh thực thi. Bạn cũng có thể kiểm soát tốc độ của hoạt ảnh bằng cách thay đổi thuộc tính thời lượng hoạt ảnh.
Cá nhân tôi nghĩ rằng phương pháp này chỉ cần thiết nếu các sự kiện nhấp chuột hoặc di chuyển chuột được yêu cầu để kích hoạt xoay. Nếu xoay được cho là chạy ngay lập tức khi tải tài liệu, thì việc sử dụng CSS3 một mình sẽ đủ. Điều tương tự cũng áp dụng nếu sự kiện di chuột được kích hoạt để xoay vòng - bạn chỉ cần xác định thuộc tính hoạt ảnh CSS3 liên kết phần tử với hoạt ảnh xoay trong các lớp giả của phần tử.
Phương pháp của tôi ở đây đơn giản dựa trên giả định rằng một sự kiện nhấp là bắt buộc để kích hoạt xoay hoặc jQuery bằng cách nào đó được yêu cầu để đóng một phần trong điều này. Tôi hiểu rằng phương pháp này khá tẻ nhạt nên nếu có ai đó có ý kiến đóng góp, vui lòng đề xuất. Cũng lưu ý rằng vì phương pháp này liên quan đến CSS3, nó sẽ không hoạt động như trên IE8 và bên dưới.
Với tìm kiếm nhanh trên Google, tôi thấy một thư viện khác mà tôi nghĩ (sau 1 phút nghiên cứu) tốt hơn, vì nó sẽ hoạt động trong nhiều trình duyệt hơn. [Hãy xem!] (Http://code.google.com/p/jqueryrotate/) – Frog
Tôi không thể sử dụng cái đó vì bạn phải gọi $ ('div'). Rotate() để xoay và bạn có thể 't làm điều đó từ animate() chức năng. Tôi đã thử nó nhưng nó thực sự vô dụng. Thêm vào đó là khó khăn để thiết lập thời gian. – user1246035
Ồ, thật đáng tiếc.Tất nhiên, bạn có thể thử viết plugin của riêng bạn, sử dụng kỹ thuật của trình cắm khác. Nếu bạn muốn nó hoạt động trong hầu hết các trình duyệt, đó thực sự là cách tốt nhất để làm điều đó ... – Frog