2010-06-11 71 views
45

Có thể xoay một div bằng jQuery không? Tôi có thể xoay hình ảnh nhưng không thể xoay một div; Có giải pháp nào cho điều này?Làm thế nào để xoay một div bằng cách sử dụng jQuery

+0

thể trùng lặp của [luân phiên một Div phần tử trong jQuery] (http://stackoverflow.com/questions/382591/rotating-a-div-element-in-jquery) – Bobby

+1

@Sjoerd: Vui lòng đọc Câu Hỏi Thường Gặp: http://meta.stackexchange.com/questions/8724/how-to-deal-with-google-questions – Bobby

+3

Tôi không nhận các quy tắc đó để đóng câu hỏi. Mọi người đang cố gắng tìm ra giải pháp cho vấn đề của họ (không chỉ là người đã đặt câu hỏi). Tôi tìm thấy điều này và tôi biết có giải pháp tốt hơn, vì vậy tôi tiếp tục tìm kiếm. Nhưng tôi không thể quay lại và đặt câu trả lời tốt hơn ở đây bởi vì "anh ấy đã không cố gắng hết sức để tìm kiếm giải pháp của riêng mình". Không phải là điểm của trang web này để thực sự cung cấp câu trả lời cho ppl trong thời gian ngắn nhất có thể?Khi anh không tự mình cố gắng "lừa dối" bản thân mình - anh ấy sẽ không trở thành lập trình giỏi nhưng cuộc chiến của anh ta không phải của chúng tôi hay của bạn. – Srneczek

Trả lời

68

CHỈNH SỬA: Đã cập nhật cho jQuery 1.8

Vì các biến đổi cụ thể của trình duyệt jQuery 1.8 sẽ được thêm tự động. jsFiddle Demo

var rotation = 0; 

jQuery.fn.rotate = function(degrees) { 
    $(this).css({'transform' : 'rotate('+ degrees +'deg)'}); 
    return $(this); 
}; 

$('.rotate').click(function() { 
    rotation += 5; 
    $(this).rotate(rotation); 
}); 

EDIT: Nhập mã để làm cho nó một chức năng jQuery.

Đối với những người bạn không muốn đọc thêm nữa, thông tin cho bạn đây. Để biết thêm chi tiết và ví dụ, hãy đọc tiếp. jsFiddle Demo.

var rotation = 0; 

jQuery.fn.rotate = function(degrees) { 
    $(this).css({'-webkit-transform' : 'rotate('+ degrees +'deg)', 
       '-moz-transform' : 'rotate('+ degrees +'deg)', 
       '-ms-transform' : 'rotate('+ degrees +'deg)', 
       'transform' : 'rotate('+ degrees +'deg)'}); 
    return $(this); 
}; 

$('.rotate').click(function() { 
    rotation += 5; 
    $(this).rotate(rotation); 
}); 

EDIT: Một trong những ý kiến ​​về bài đăng này đề cập jQuery Multirotation. Plugin này cho jQuery về cơ bản thực hiện chức năng trên với sự hỗ trợ cho IE8. Nó có thể có giá trị sử dụng nếu bạn muốn tương thích tối đa hoặc nhiều tùy chọn hơn. Nhưng đối với chi phí tối thiểu, tôi đề nghị các chức năng trên. Nó sẽ làm việc IE9 +, Chrome, Firefox, Opera và nhiều thứ khác.


Bobby ... Điều này là dành cho những người thực sự muốn làm điều đó trong javascript. Điều này có thể được yêu cầu để quay trên một cuộc gọi lại javascript.

Đây là jsFiddle.

Nếu bạn muốn xoay theo khoảng thời gian tùy chỉnh, bạn có thể sử dụng jQuery để đặt thủ công css thay vì thêm lớp học. Giống như this! Tôi đã bao gồm cả hai tùy chọn jQuery ở dưới cùng của câu trả lời.

HTML

<div class="rotate"> 
    <h1>Rotatey text</h1> 
</div> 

CSS

/* Totally for style */ 
.rotate { 
    background: #F02311; 
    color: #FFF; 
    width: 200px; 
    height: 200px; 
    text-align: center; 
    font: normal 1em Arial; 
    position: relative; 
    top: 50px; 
    left: 50px; 
} 

/* The real code */ 
.rotated { 
    -webkit-transform: rotate(45deg); /* Chrome, Safari 3.1+ */ 
    -moz-transform: rotate(45deg); /* Firefox 3.5-15 */ 
    -ms-transform: rotate(45deg); /* IE 9 */ 
    -o-transform: rotate(45deg); /* Opera 10.50-12.00 */ 
    transform: rotate(45deg); /* Firefox 16+, IE 10+, Opera 12.10+ */ 
} 

jQuery

Hãy chắc chắn rằng chúng được bọc trong $ (document) .ready

$('.rotate').click(function() { 
    $(this).toggleClass('rotated'); 
}); 
khoảng

Tuỳ chỉnh

var rotation = 0; 
$('.rotate').click(function() { 
    rotation += 5; 
    $(this).css({'-webkit-transform' : 'rotate('+ rotation +'deg)', 
       '-moz-transform' : 'rotate('+ rotation +'deg)', 
       '-ms-transform' : 'rotate('+ rotation +'deg)', 
       'transform' : 'rotate('+ rotation +'deg)'}); 
}); 
+0

vòng quay đó tốt hơn? css hoặc jquery, http://plugins.jquery.com/multirotation/. cảm ơn. –

+0

Đã thêm thông tin trong câu trả lời về plugin này. Hãy xem mã nguồn của plugin. Nó có hỗ trợ cho IE8 và một vài tính năng khác, nhưng khác hơn là nó thực hiện chính xác những gì điều này + phí. – screenmutt

+0

Đơn giản và hoạt động hoàn hảo. Cảm ơn bạn đã biến nó thành một hàm jQuery. Bạn có thể thay thế định nghĩa 'jQuery.fn.rotate' bằng' $ .fn.rotate' - làm điều tương tự nhưng ngắn gọn hơn. – clearlight

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