2010-06-11 15 views
45

Ist es möglich, ein Div mit jQuery zu drehen? Ich kann ein Bild drehen, kann aber ein Div nicht drehen; Gibt es dafür eine Lösung?Wie man ein Div mit jQuery dreht

+0

möglich Duplikat (http://stackoverflow.com/questions/382591/rotating-a-div-element-in-jquery) [ein Div Element in jQuery Rotierende] – Bobby

+1

@Sjoerd: Bitte lesen Sie die FAQ: http://meta.stackexchange.com/questions/8724/how-to-deal-with-google-questions – Bobby

+3

Ich bekomme diese Regeln nicht zum Schließen von Fragen. Die Menschen versuchen, Lösungen für ihre Probleme zu finden (nicht nur derjenige, der die Frage gestellt hat). Ich fand das und wusste, dass es eine bessere Lösung gibt, also suchte ich weiter. Aber ich konnte nicht zurückkommen und hier eine bessere Antwort geben, weil "er nicht hart genug versuchte, seine eigene Lösung zu suchen". War es nicht der Zweck dieser Seite, tatsächlich Antworten für Leute in so kurzer Zeit wie möglich zu geben?Wenn er nicht selbst versucht, sich selbst zu "betrügen", wird er kein guter Programmierer, aber sein Kampf ist nicht unser oder dein. – Srneczek

Antwort

68

EDIT: Aktualisiert für jQuery 1.8

Da jQuery 1.8 Browser spezifischen Transformationen werden automatisch hinzugefügt. 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: Code hinzugefügt, es ist ein jQuery-Funktion zu machen.

Für diejenigen von euch, die nicht weiter lesen wollen, hier gehts. Für weitere Details und Beispiele lesen Sie weiter. 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: Einer der Kommentare zu diesem Beitrag erwähnt jQuery Multirotation. Dieses Plugin für jQuery führt im Wesentlichen die obige Funktion mit Unterstützung für IE8 aus. Es kann sich lohnen, wenn Sie maximale Kompatibilität oder mehr Optionen wünschen. Aber für minimalen Overhead empfehle ich die obige Funktion. Es funktioniert IE9 +, Chrome, Firefox, Opera und viele andere.


Bobby ... Dies ist für die Menschen, die tatsächlich in der Javascript tun wollen. Dies kann erforderlich sein, um bei einem JavaScript-Callback zu rotieren.

Hier ist ein jsFiddle.

Wenn Sie in benutzerdefinierten Intervallen rotieren möchten, können Sie jQuery verwenden, um die CSS manuell festzulegen, anstatt eine Klasse hinzuzufügen. Wie this! Ich habe beide jQuery Optionen am Ende der Antwort enthalten.

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

Achten Sie darauf, diese in $ (document) gewickelt sind .ready

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

Intervalle Individuelle

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

dass die Rotation besser ist? css oder jquery, http://plugins.jquery.com/multirotation/. Vielen Dank. –

+0

Informationen in der Antwort zu diesem Plugin hinzugefügt. Schauen Sie sich den Quellcode für das Plugin an. Es hat Unterstützung für IE8 und ein paar mehr Funktionen, aber abgesehen davon, dass es genau das tut, was dies tut + Overhead. – screenmutt

+0

Einfach und funktioniert perfekt. Danke, dass Sie es zu einer jQuery-Funktion gemacht haben. Sie können die Definition 'jQuery.fn.rotate' durch' $ .fn.rotate' ersetzen - macht dasselbe, aber prägnanter. – clearlight