jquery
2013-01-16 4290 views 12 likes 
12

Tôi đang cố gắng để đạt được điều này (90 độ xoay), nhưng nó không thành công mà không có lỗi. Hình ảnh này nằm trong một <a></a> TAG, nơi đã có chức năng chuyển đổi jquery.jquery xoay hình ảnh onclick

<?php echo "<img src='down_arrow.png' onclick='$(this).animate({rotate: \"+=90deg\"});' />"; ?> 
+1

bạn cần một plugin để xoay, bạn biết rằng phải không và không cho chúng ta thấy mã serverside, html được tạo ra là đủ. – mpm

+0

Bạn đang sử dụng [this] (http://www.zachstronaut.com/posts/2009/08/07/ jquery-animate-css-rotate-scale.html) patch? – bitWorking

+0

Không, tôi nghĩ đó là inclu ded in jquery: s tôi sẽ kiểm tra điều này, Cảm ơn bạn –

Trả lời

14

Hãy xem xét một phần mở rộng jQuery như: jQueryRotate

Nó sẽ làm cho quay bên trong dễ dàng hơn onclick hơn và dễ đọc hơn.

+2

Cảm ơn, nó hoạt động. Hình ảnh chỉ quay một lần: 'onclick = '$ (this) .rotate (180);'' –

+0

Đó có phải là nhận xét hay câu hỏi không? – SMASH

+0

nó là một câu hỏi ... –

7

thanh toán này: JqueryRotate

này có những điều nhỏ nhặt để làm, bạn có thể xem ví dụ một mã trong hình ảnh riêng của mình.

enter image description here

Vì vậy, trong trường hợp của bạn, bạn có thể làm điều này:

$(document).ready(function(){ 
    $('img[src^="down_arrow"]').click(function(){ 
     $(this).rotate(90); 
    }); 
}); 
+0

Tại sao mã của tôi chỉ hoạt động một lần? 'onclick = '$ (this).xoay (180); '' Hình ảnh được xoay nhưng nếu tôi nhấp một lần nữa nó sẽ ghi lại –

+2

@ArtPlanteur Có lẽ vì bạn đã xoay ở 180 độ. – MiniRagnarok

+0

Bạn sẽ lưu ảnh xoay như thế nào sau đó? – Mightee

41

Tùy thuộc vào phiên bản trình duyệt bạn cần hỗ trợ, bạn có thể thử tranforms CSS.

Đầu tiên, xác định một lớp CSS như thế này:

.rotated { 
    transform: rotate(90deg); 
    -ms-transform: rotate(90deg); /* IE 9 */ 
    -moz-transform: rotate(90deg); /* Firefox */ 
    -webkit-transform: rotate(90deg); /* Safari and Chrome */ 
    -o-transform: rotate(90deg); /* Opera */ 
} 

Và sau đó bạn có thể sử dụng jQuery để thêm lớp khi nhấn vào liên kết:

<img src="down_arrow.png" onclick="$(this).addClass('rotated');" /> 
+0

Tôi không nghĩ về cách đó, cảm ơn. –

+0

Nó chỉ đơn giản là tuyệt vời bao nhiêu người ta có thể thực hiện khi chúng ta chỉ đơn giản là biết khi nào để thêm một lớp hoặc một id cho một phần tử thông qua jquery – blackhawk

+0

Điều này sẽ hoạt động chỉ một lần? –

16

Sử dụng một sự kết hợp các quy tắc css -webkit-transform-moz-transform khi nhấp vào hình ảnh.Ví dụ để xoay hình ảnh bằng 90 độ áp dụng theo các quy tắc css khi nhấp vào

$('img').click(function(){ 
    $(this).css({ 
     "-webkit-transform": "rotate(90deg)", 
     "-moz-transform": "rotate(90deg)", 
     "transform": "rotate(90deg)" /* For modern browsers(CSS3) */ 
    }); 
}); 
2

Điều này sẽ cho phép bạn thực hiện một vòng quay bổ sung cho mỗi clik

var degrees = 0; . $ ('img') click (function rotateMe (e) {

degrees += 90; 

//$('.img').addClass('rotated'); // for one time rotation 

$('.img').css({ 

    'transform': 'rotate(' + degrees + 'deg)', 
    '-ms-transform': 'rotate(' + degrees + 'deg)', 
    '-moz-transform': 'rotate(' + degrees + 'deg)', 
    '-webkit-transform': 'rotate(' + degrees + 'deg)', 
    '-o-transform': 'rotate(' + degrees + 'deg)' 
}); 

https://jsfiddle.net/Lnckq5om/1/

+0

Giải pháp tuyệt vời. Rất rõ ràng phải làm gì bằng cách làm theo jsfiddle. Trong trường hợp của tôi, đó là chính xác những gì bác sĩ đã ra lệnh. Một lời cảm ơn lớn! – MZA

0

Đây là ví dụ để xoay hình ảnh 90deg như sau mã bên dưới:

$(document).ready(function(){ 
    $("img").click(function(){ 
     $(this).rotate(90); 
    }); 
}); 
Các vấn đề liên quan