


Cross-Browser-Rotation mit jQuery.animate()
Problem
Cross-Browser-Rotation mit jQuery.animate() erweist sich aufgrund der als herausfordernd Nichtanimationsfunktionen von CSS-Transformationen. Der folgende Code veranschaulicht das Problem:
$(document).ready(function () { DoRotate(30); AnimateRotate(30); }); function DoRotate(d) { $("#MyDiv1").css({ '-moz-transform':'rotate('+d+'deg)', '-webkit-transform':'rotate('+d+'deg)', '-o-transform':'rotate('+d+'deg)', '-ms-transform':'rotate('+d+'deg)', 'transform': 'rotate('+d+'deg)' }); } function AnimateRotate(d) { $("#MyDiv2").animate({ '-moz-transform':'rotate('+d+'deg)', '-webkit-transform':'rotate('+d+'deg)', '-o-transform':'rotate('+d+'deg)', '-ms-transform':'rotate('+d+'deg)', 'transform':'rotate('+d+'deg)' }, 1000); }
Rotation funktioniert bei Verwendung von .css(), jedoch nicht bei .animate(). Warum? Und wie können wir dieses Hindernis überwinden?
Lösung
Während CSS-Transformationen in jQuery keine direkte Animationsunterstützung bieten, ist eine Problemumgehung mit einem Step-Callback wie diesem möglich:
function AnimateRotate(angle) { // Cache the object for performance var $elem = $('#MyDiv2'); // Use a pseudo object for the animation (starts from `0` to `angle`) $({deg: 0}).animate({deg: angle}, { duration: 2000, step: function(now) { // Use the `now` parameter (current animation position) in the step-callback $elem.css({ transform: 'rotate(' + now + 'deg)' }); } }); }
Diese Methode ermöglicht die Drehung von Elementen mithilfe von jQuery. Darüber hinaus macht jQuery 1.7 die Notwendigkeit von CSS3-Transformationspräfixen überflüssig.
jQuery-Plugin
Um den Prozess zu vereinfachen, erstellen Sie ein jQuery-Plugin wie dieses:
$.fn.animateRotate = function(angle, duration, easing, complete) { return this.each(function() { var $elem = $(this); $({deg: 0}).animate({deg: angle}, { duration: duration, easing: easing, step: function(now) { $elem.css({ transform: 'rotate(' + now + 'deg)' }); }, complete: complete || $.noop }); }); }; $('#MyDiv2').animateRotate(90);
Optimiertes Plugin
Für eine bessere Effizienz und Flexibilität kann ein optimiertes Plugin verwendet werden erstellt:
$.fn.animateRotate = function(angle, duration, easing, complete) { var args = $.speed(duration, easing, complete); var step = args.step; return this.each(function(i, e) { args.complete = $.proxy(args.complete, e); args.step = function(now) { $.style(e, 'transform', 'rotate(' + now + 'deg)'); if (step) return step.apply(e, arguments); }; $({deg: 0}).animate({deg: angle}, args); }); };
Verwendung
Das Plugin bietet zwei Möglichkeiten, es zu verwenden:
- Einzeilige Syntax:
$(node).animateRotate(90); $(node).animateRotate(90, function () {}); $(node).animateRotate(90, 1337, 'linear', function () {});
- Objektsyntax (bevorzugt für mehr als drei Argumente):
$(node).animateRotate(90, { duration: 1337, easing: 'linear', complete: function () {}, step: function () {} });
Fazit
Dieses Plugin ermöglicht die browserübergreifende CSS-Rotation mithilfe der Animationsfunktionen von jQuery. Es macht manuelle Rotationsberechnungen überflüssig und bietet eine bequeme und optimierte Möglichkeit, Rotationseffekte zu erzielen.
Das obige ist der detaillierte Inhalt vonWarum funktioniert jQuery.animate() nicht für CSS3-Rotationen und wie können wir mit jQuery browserübergreifende animierte Rotationen erreichen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Da ich das CSS4¹ zum ersten Mal eingemischt habe, gab es eine Menge mehr Diskussion darüber. Ich werde meine Lieblingsgedanken von anderen hier zusammenschließen. Es gibt

Jedes Mal, wenn ich ein neues Projekt starte, organisiere ich den Code, den ich in drei Typen oder Kategorien betrachte, wenn Sie möchten. Und ich denke, diese Typen können auf angewendet werden

Ich war schuldig, die Komplexität von Https öffentlich beklagt zu haben. In der Vergangenheit hat ich SSL-Zertifikate von Drittanbietern gekauft und hatte Probleme

Alles, was Sie schon immer über Datenattribute in HTML, CSS und JavaScript wissen wollten.

Wenn Sie in JavaScript noch nicht mit Unveränderlichkeit gearbeitet haben, ist es möglicherweise einfach, sie mit der Zuweisung einer Variablen für einen neuen Wert oder einer Neuzuweisung zu verwechseln.

Es ist durchaus möglich, benutzerdefinierte Kontrollkästchen, Optionsfelder und Schalter zu erstellen und gleichzeitig semantisch und zugänglich zu bleiben. Wir brauchen nicht einmal eine

Es gibt spezielle Superset -Nummer -Charaktere, die manchmal perfekt für Fußnoten sind. Hier sind sie:

Haben Sie jemals einen Countdown -Timer für ein Projekt benötigt? Für so etwas ist es möglicherweise natürlich, nach einem Plugin zu greifen, aber es ist tatsächlich viel mehr


Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

MantisBT
Mantis ist ein einfach zu implementierendes webbasiertes Tool zur Fehlerverfolgung, das die Fehlerverfolgung von Produkten unterstützen soll. Es erfordert PHP, MySQL und einen Webserver. Schauen Sie sich unsere Demo- und Hosting-Services an.

Dreamweaver Mac
Visuelle Webentwicklungstools

ZendStudio 13.5.1 Mac
Leistungsstarke integrierte PHP-Entwicklungsumgebung

MinGW – Minimalistisches GNU für Windows
Dieses Projekt wird derzeit auf osdn.net/projects/mingw migriert. Sie können uns dort weiterhin folgen. MinGW: Eine native Windows-Portierung der GNU Compiler Collection (GCC), frei verteilbare Importbibliotheken und Header-Dateien zum Erstellen nativer Windows-Anwendungen, einschließlich Erweiterungen der MSVC-Laufzeit zur Unterstützung der C99-Funktionalität. Die gesamte MinGW-Software kann auf 64-Bit-Windows-Plattformen ausgeführt werden.

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen