Kürzlich hatte ich den Anlass, etwas in einem Kreis zu animieren. Mir war bis dahin nicht bewusst, dass es dafür noch keine offensichtliche Lösung mit jQuery gab. Also habe ich einen Weg gefunden und daraus ein Plugin gemacht.
Dieses Einhorn kann mit diesem Plugin verdammt rückwärts fliegen.
Demo anzeigen Dateien herunterladen
Die ermächtigenden Konzepte
Dies ist ein jQuery-Plugin, daher ist es offensichtlich auf die jQuery-Bibliothek angewiesen. Speziell jQuery 1.4 oder neuer, da wir die neue Fähigkeit der .animate()-Funktion nutzen, eigene Easing-Funktionen pro Eigenschaft zu haben. Das bedeutet, wir können den "top"-Wert mit einer Easing-Funktion animieren, während wir den "left"-Wert mit einer anderen Easing-Funktion animieren. Bei all dem Gerede über Easing... ich sollte sagen, dass dies nicht nur jQuery 1.4+ erfordert, sondern auch das Easing-Plugin. Hier ist die Idee

Wenn wir das also viermal tun, die Easing-Funktionen vertauschen und nach Bedarf addieren/subtrahieren, können wir einen Kreis erhalten. Und nicht nur einen Kreis wirklich, sondern jede Ellipse, die durch Höhe und Breite definiert ist.
Funktionen
Sie können Geschwindigkeit, Höhe und Breite festlegen. Das sind ziemlich offensichtliche / Standard- / erwartete Parameter für ein Plugin wie dieses. Es gibt jedoch drei weitere
- sizeAdjustment: eine prozentuale Anpassung. Standard ist 100 (bleibt gleich). Weniger als 100 = schrumpft auf diesen Prozentsatz zur Hälfte des Weges und dann wieder nach oben. Mehr als 100 = wächst auf diesen Prozentsatz zur Hälfte des Weges und dann wieder nach unten.
- loop: Standard ist false. True bedeutet, dass die Schleife rekursiv ausgeführt wird. Sie können eine laufende Schleife stoppen, indem Sie das Plugin für dieses Element mit nur einem einzigen String-Parameter aufrufen: $(“#thing”).circulate(“stop”);
- zIndexValue: akzeptiert ein Array von vier numerischen Werten. Diese Werte legen die z-index CSS-Eigenschaft an jedem der vier Punkte der Animation fest.
Hier ist das vollständige Set
$("#anything").circulate({
speed: 400, // Speed of each quarter segment of animation, 1000 = 1 second
height: 200, // Distance vertically to travel
width: 200, // Distance horizontally to travel
sizeAdjustment: 100, // Percentage to grow or shrink
loop: false, // Circulate continuously
zIndexValues: [1, 1, 1, 1], // Sets z-index value at each stop of animation
});
BETA
Im Moment nenne ich das eine Beta-Version. Hauptsächlich, weil es in Opera nicht sehr gut funktioniert. Wenn jemand ein großer Opera-Fan ist und herausfinden möchte, was damit nicht stimmt, bin ich ganz Ohr.
Es ist auch Beta, weil ich noch nicht viel Feedback dazu erhalten habe, daher möchte ich auf alles reagieren, was reinkommt, und bei Bedarf Änderungen vornehmen. Zum Beispiel denke ich, dass ein Callback-Funktionsparameter eine gute Idee wäre. Außerdem bin ich sicher, dass einige Teile effizienter geschrieben werden könnten.
Fantastisch!
Es ist großartig, erstaunlich, noch nie gesehen, noch nie gedacht.
Ihre Demo ist einfach perfekt. Alles bewegt sich auf irgendeine Weise.
Ich habe ein paar Minuten mit bunten Bällen gespielt.
Großartig…
Danke für die Bereitstellung von so etwas..
auf jeden Fall
Ich mag die Verwendung mehrerer Animationsparameter, und visuell ist es schön, aber wie werde ich das in der Realität nutzen? Es ist eine Neuheit. Drehende Einhörner und Bälle sind großartig für Geocities circa 1997.
So habe ich es zuerst gesehen,
aber es gibt bereits ein einfacheres jQuery-Plugin.
und wir haben es für einen Karussell aus Avataren verwendet, die auf unserer Profilseite ausgewählt werden können.
sie müssen sich nicht automatisch bewegen, sie können einzeln animiert werden, z. B. mit linken und rechten Schaltflächen.
immer noch die Bogenanimation, als ob es wirklich ein Karussell wäre, anstatt nur hinter unsichtbaren Mauern nach links und rechts zu gleiten.
das Plugin, das wir verwendet haben, ist dieses
http://fredhq.com/projects/roundabout/
Ein weiterer möglicher Verwendungszweck wäre das Karussell von Projekten wie auf der jQuery-Website
http://jquery.org/
Schönes Plugin! Jetzt - lass uns den Inhalt auch in den Container bekommen! :-) Du bist der Mann.
Das könnte definitiv optimiert werden. Die CPU-Auslastung steigt von 8 % auf 30-50 %, wenn dies läuft.
Du hast Recht, ROB. Ich habe die CPU-Auslastung überprüft, sie steigt stark an.
Nun, es ist nicht gerade Flash ;-) aber mein Prozessor ist von 5 % auf 22 % hochgesprungen. Dies ist mit der verrückten Schleife auch mit der CRAZY-Option. Ich habe einen 64-Bit Core i5. Außerdem wird "CRAZY" zu "CRAZ Y" und manchmal zu "CRA ZY", je nachdem, wie lange es schleift. Ich bin mir nicht sicher, wo oder wie ich es verwenden würde, aber gute Arbeit, Chris!
Plugin benötigt.
Einfach erstaunlich !!!
Deshalb glaube ich an Gott
In 1024×768 erscheint an einer Stelle der Zirkulation eine horizontale Scrollleiste, die kleiner wird, bis sie verschwindet.
Sie können es mit einem Container-Div mit overflow:hidden beheben. Verkleinern Sie einfach den Container auf die Breite und Höhe des Fensters zu Beginn und bei jeder Größenänderung. =)
Das ist verrückt, ich habe gerade versucht, das in CSS3 zu machen (es ist überraschend nicht zu schwer). Gute Arbeit!
Teile es doch! Ich nehme an, man könnte CSS3-Übergänge verwenden, um die top/left-Werte anzupassen, aber ich wusste nicht, dass man pro Eigenschaft Easing einstellen kann. Hast du eine Demo?
Ich persönlich habe viel von Ihrer Seite gelernt.
Gute Arbeit …
Haben Sie Smashing Magazine um Erlaubnis gebeten, das "G" aus deren Logo zu stehlen? :–)
Er hat wahrscheinlich nicht bemerkt, dass deren "G" wie sein "C" ist
Smashing wer?
Phänomenal! Das schließt die Lücke zwischen JS und Flash weiter.
Du bist ein verdammt schlauer Kerl, Chris.
Beeindruckend. Mir gefällt die Demo von 3 Kugeln (unten) sehr gut. Es ist so cool.
Ich halte das für eines der lächerlichsten Beispiele für ein jQuery-Plugin, das ich je gesehen habe. Ich liebe es lol
Sieht ziemlich gut aus !!
Aber der Effekt in IE7 ist im Vergleich zu anderen Browsern nicht so gut
Einfach genial! Ich habe gerade zugeschaut und mich gewundert. Ich sterbe danach, jQuery zu lernen.. aber es gibt noch viel über CSS zu lernen. ! Du bist genial Chris!
Haha… ich liebe dieses Einhorn!
Brillant.
Ich muss lachen, aber das ist so großartig. Gut gemacht.
was für eine Idee!!!
Das ist wohl das Beeindruckendste, was ich je auf dieser Seite gesehen habe. Gut gemacht!
Sieht fantastisch aus, Chris! Hast du dir das jquery.path-Attribut angesehen?
http://http://blog.parkerfox.co.uk/2009/09/22/bezier-curves-and-arcs-in-jquery/
ps Easing könnte auch in ihrem Beispiel verwendet werden
Navigationsideen, jemand? lol sehr nett Chris
IE enttäuscht
Ich muss zugeben, dass mich in letzter Zeit einige Ihrer Artikel nicht mehr so gefesselt haben, da sie für meinen persönlichen Weg nicht mehr so relevant waren. Aber dieser Artikel ist absolut brillant und ich denke, er könnte meine Arbeit mit meinen Websites revolutionieren.
Die Animation ist flüssig und sieht großartig aus. jQuery ist etwas, bei dem ich meine Kenntnisse verbessern möchte, und Sie machen es so spaßig, damit zu arbeiten.
Du übertriffst dich manchmal wirklich, Mann. Hochachtung, Bruder.
Es musste einfach ein Einhorn sein…
Wow! Das ist ein schönes Plugin, Animation mit jQuery.
Ich habe vor ein paar Tagen einen Blick darauf erhascht (Sie erwähnten es in Ihrer Sprechblase unten auf der Seite, glaube ich). Zwei Dinge fallen mir auf
1) Bei den drei Kugeln gibt es einen deutlichen "Buckel" beim Übergang zwischen den Easing-Sets (oder wie auch immer man sie nennen will, d.h. vorne/oben und hinten/unten im Kreis). Die seitlichen Übergänge scheinen flüssig zu sein, vielleicht weil sie einen größeren Winkel haben.
2) Bei dem Text, wenn man ihn eine Weile rotieren lässt, beginnen sich die Buchstaben unabhängig voneinander zu bewegen. Ich bin mir nicht sicher, ob das beabsichtigt ist oder nicht - ich kann mir einige Fälle vorstellen, in denen es ziemlich nett wäre, und andere, in denen es definitiv unerwünscht wäre.
Sieht insgesamt cool aus!
… Die verstreuten Kreise oben sind auch ziemlich cool - ich wäre daran interessiert, wie diese funktionieren.
Das Einhorn ist großartig!
lol Ich meine die Demo.
Ich habe das Lightbox2-Plugin auf meiner Website, ich habe das Einhorn-Plugin zur Website hinzugefügt und es funktioniert nicht mit dem Lightbox-Plugin. Muss ich etwas in eines der Plugins schreiben, um das Problem zu beheben? Ich möchte eine fliegende Untertasse anstelle des Einhorns rotieren lassen.
Danke!
Wow! Und deshalb betrachte ich Sie als Meister der Macht! Ich bin Ihr Lehrling! Übrigens Chris, diese kostenlosen Geschenke, die wir von Ihnen erhalten? Dürfen wir diese auf unseren Websites verwenden? Da ich einige Dinge von hier verwenden möchte und ich gerne eine Anerkennung auf dem Code und auf meiner Website mit einem Link zu Ihrer machen würde. . .
+1 mit Rob
Das nimmt 35% meiner CPU ein
Aber der Effekt ist sehr genial ^^
Mit Google Chrome und einem Quad-Core-PC mit 3 GB RAM verbraucht es nur 7 % meiner CPU :)
Ja, Chrome scheint eine bessere Leistung zu erzielen!
Schön!
Vielleicht SVG verwenden, damit das Einhorn nicht so zackig ist?
hohohohoho… wir können eine Sache fliegen lassen…
cool
… Sir. Sie machen einen fantastischen Effekt. Danke fürs Teilen.
Wow! Das ist ziemlich genial!! Ich kann mir jedoch vorstellen, dass einige Kunden nach einem rotierenden Globus-Logo fragen, aber dieses Mal eines, das sich um die Website dreht! LOL! Bleiben Sie fern!!!
Tolles Plugin, Chris!
Wow… dieses Ding fasziniert mich! Irgendwie beruhigend. Cool. Ich kann es kaum erwarten, jQuery zu lernen!
Ich genieße Ihre Seite immer. Danke.
Das wäre großartig für eine Portfolio-Seite. Wenn Sie es so einrichten könnten, dass alle Ihre Portfolio-Elemente wie das Einhorn-Bild sind, nur die Schleife ausschalten und einen "Nächster" und "Vorheriger"-Button haben, um durch das Portfolio zu blättern.
Lol, vergiss meinen letzten Kommentar. Habe gerade das hier gefunden
http://www.professorcloud.com/mainsite/carousel.htm
spiele nur mit dem JS
http://weno.com.br/experiment/panda_abacaxi/
Sehr schönes Plugin Chris! Gut gemacht!
Mond umkreist Planet
Ich hatte eine Idee und habe sie ausprobiert. Es hat funktioniert (irgendwie), aber ich lerne gerade jQuery, also gibt es ein paar Dinge, die ich nicht lösen kann.
Link
1) Am unteren Rand der Umlaufbahn wird die Umlaufbahn des Mondes wackelig. Ich weiß nicht warum oder wie es behoben werden könnte.
2) Da ich ein Bild um ein anderes kreisendes Bild "manipuliert" habe, indem ich alles in s gewickelt und diese dann zirkulieren lassen habe, kann ich die Bilder nicht in der Größe ändern. Weiß auch nicht, wie man das beheben kann.
Wenn jemand Ideen hat, diese Probleme zu lösen, würde ich mich freuen, davon zu hören!
-Danke
Das ist ziemlich lustig
Atom!
Ich habe ehrlich gesagt nicht einmal darüber nachgedacht, Dinge um andere kreisende Dinge zu zirkulieren. Ich bin froh, dass es so reibungslos funktioniert! Sehr cool!
Cooler Effekt….aber ich möchte sehen, wie du es gemacht hast, nicht ein Plugin benutzen!
Lade die Dateien herunter und du kannst es selbst sehen
: )
Zu den Opera-Bugs
Das Problem ist, dass die berechneten Werte für left und top in Opera so berechnet werden, als ob die Elemente absolut an ihren statischen Positionen positioniert wären (anstatt auto, wie die Spezifikation im Fall von static oder null wie bei Firefox besagt). Das führt dazu, dass sie um diesen Betrag versetzt sind, wenn die Animation beginnt, da jQuery diese als Startwerte verwendet. Das bedeutet im Grunde, dass die Animation in Opera funktioniert, wenn Sie das zu zirkulierende Element in der oberen linken Ecke einer relativ/absolut gestalteten Box positionieren.
Ich freue mich immer auf deine Alt-Tags.. wie auf dem des Einhorns…
Für mich ist das ein weiterer Nagel im Sarg von Flash.. gute Arbeit
Kevin
Das ist wunderbar. Übrigens, bevor dieser Beitrag herauskam, habe ich die Demo-Seite auf Delicious gesehen und sie damals bereits gespeichert. Später, als ich auf diesem Blog nach "circulate" suchte, konnte ich keinen Beitrag finden. Ich frage mich, woher die Leute das vorher erfahren.
Das ist sehr cool. Ich habe einmal versucht, ein kreisförmiges Drag-and-Drop-Menü mit jQuery und CSS3 zu erstellen, indem ich einen Winkel von 0 bis 360 Grad animierte und mathematische Funktionen in JS verwendete, um zwischen Polar- und Rechteckkoordinaten umzuwandeln. Es hat nicht ganz funktioniert.
Wenn ich mich nicht irre, ist eine Einschränkung Ihrer Methode, dass man die Animation nicht mitten im Zyklus pausieren und von derselben Stelle fortsetzen kann. Wenn die Easing-Funktionen auf Null zurückgesetzt werden, würde ein pausiertes Objekt mit einem neuen Rotationszentrum fortgesetzt.
Wirklich cool. Ich würde gerne mitten im Kreis anhalten können… die Gedankengang dabei… "wenn (x) angeklickt wird, animiere (x) und (x) entlang einer Ellipse von (x), wobei du im Wesentlichen zwei Bilder mit einem anderen entlang eines Bogens austauschst.