• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

DIV rotieren lassen mit JS (kein Canvas)

Nachdem ich gesehen habe, dass meine bisherige Javascript-Lösung sehr langsam ist und seltsamer Weise im FF 3 Mal langsamer läuft als im IE, favorisiere ich jetzt eine reine CSS-Lösung, die nur einmal per Javascript angestoßen wird.

Sieht gut flüssig aus, nur bei Opera läuft die Animation zu spät los und zwar genau um den Wert "duration". Warum???

Gestartet wird die Animation mit einem Klick auf das Bild.

Code:
<html>
<head>

<style type="text/css">
#Stern{position:absolute;left:54px;top:54px;z-index:1;height:332px;width:332px;text-align:center;display:block;
-webkit-animation-name:Stern; 
-webkit-animation-duration:10s;
-webkit-animation-timing-function:linear;
-webkit-animation-iteration-count:infinite;
-webkit-animation-delay:0s;
-webkit-animation-play-state:paused;
animation-name:Stern; 
animation-duration:10s;
animation-timing-function:linear;
animation-iteration-count:infinite;
animation-delay:0s;
animation-play-state:paused;
}
@-webkit-keyframes Stern{
from{-webkit-transform:rotate(0deg)}
to{-webkit-transform:rotate(360deg)}
}
@keyframes Stern{
from{transform:rotate(0deg)}
to{transform:rotate(360deg)}
}
</style>

<script language="JavaScript" type="text/javascript">
function drehen(){
document.getElementById("Stern").style.WebkitAnimationPlayState="running";
document.getElementById("Stern").style.animationPlayState="running";
}
</script>
</head>
<body>

<div id="Stern">
<img src="http://www.yogispiele.de/Spiele/Peng/Rad.png" width="332" height="332" alt="" onclick="drehen()">
</div>

</body>
</html>
 
Ich habe jetzt das Opera-Problem gelöst.

Warum auch immer, reagiert Opera auf die Änderung von PlayState nicht richtig. Daher habe ich jetzt meinen älteren Ansatz, das Ganze mit Klassen zu machen, ausprobiert. Wenn die Drehbewegung beginnen soll, weise ich einfach über Javascript die entsprechende Klasse zu. Und das funktioniert auch mit Opera, allerdings ist hier die Drehbewegung nicht 100% flüssig, aber IE, FF und Chrome haben dazugewonnen (gegenüber meiner Lösung, die Drehbewegung alle 15ms per setTimeout auszulösen).
 
In welchem Opera hast du Probleme mit meinem Skript?

PS: dein HTML hat keine DocType. Das könnte eventuell die Probleme mit Opera erklären/lösen.
PPS: das language-Attribut ist veraltet -> weg damit.
 
In welchem Opera hast du Probleme mit meinem Skript?

In der aktuellen Version, sowohl unter 32 als auch unter 64 Bit. Es ruckelte und im oberen Drittel war ein Flackern sichtbar.

PS: dein HTML hat keine DocType. Das könnte eventuell die Probleme mit Opera erklären/lösen.

Daran liegt's leider nicht, denn in meinem Spiel ist sehr wohl ein Deklaration vorhanden. Aber für mich ist das Problem jetzt erst einmal gelöst.
 
In der aktuellen Version, sowohl unter 32 als auch unter 64 Bit. Es ruckelte und im oberen Drittel war ein Flackern sichtbar.
Bei mir nicht... seltsam. Aber die Animation der rotate-Eigenschaft hab' ich auch erst für das Beispiel hier in mein Framework eingebaut... könnte also durchaus noch irgendein Bug drin sein ;)

Aber wenn du mit der CSS-Lösung gut arbeiten kannst, ist ja alles super.
 
Hast Du an deiner Lösung noch etwas verändert, denn das Flackern ist jetzt weg. Allerdings ruckelt es noch sehr stark. Ist Opera denn wirklich so langsam?

Jetzt kommt es darauf an, zu entscheiden was besser ist: Die Einhaltung der Zeit, verbunden mit einem Ruckeln oder die Überschreitung der Zeit, aber ohne Ruckeln. Optisch schöner ist natürlich ohne Ruckeln, aber wenn die Zeit spielbestimmend ist ...

Ich glaube, dass meine jetzige Lösung daher wohl der beste Kompromiss ist. Ich habe aktuell die Umdrehung auf exakt 10 Sekunden eingestellt und das Ruckeln unter Opera ist zwar vorhanden, aber wesentlich geringer, als bei deiner Lösung. Die Animation direkt über CSS scheint wohl am schnellsten zu sein.
 
Hast Du an deiner Lösung noch etwas verändert, denn das Flackern ist jetzt weg. Allerdings ruckelt es noch sehr stark. Ist Opera denn wirklich so langsam?
Nö - hab' eigentlich nichts mehr geändert. Die neueste Version von Opera basiert eigentlich auf Chrome und müsste ungefähr die gleiche Geschwindigkeit haben...
Im Opera 21 läuft auch alles glatt - im Opera 12 (letzte Version mit Presto) flackert es bei mir auch.

Ich glaube, dass meine jetzige Lösung daher wohl der beste Kompromiss ist. Ich habe aktuell die Umdrehung auf exakt 10 Sekunden eingestellt und das Ruckeln unter Opera ist zwar vorhanden, aber wesentlich geringer, als bei deiner Lösung. Die Animation direkt über CSS scheint wohl am schnellsten zu sein.
Du kannst auch mal ein anderes Framework ausprobieren und schauen, ob die in Opera besser sind...
 
Jetzt verstehe ich gar nichts mehr, denn meine Opera-Version war die 12.17. Und Opera selbst behauptete, dass dies die aktuellste Version sei (bei: auf Updates prüfen).

Also habe ich mir nun Opera manuell heruntergeladen und siehe da: Die Animation läuft jetzt sehr ruhig ab.
 
Der Presto-Pfad von Opera (bis 12.17) ist unabhängig vom Chromium-Pfad und deswegen wird da auch nicht darauf upgedated...
 
Zurück
Oben