Dies ist die iPhone-Site: http://www.thevisionairegroup.com/projects/accessorizer/site/
Nachdem Sie auf "Jetzt spielen" geklickt haben, gelangen Sie zu einem Spiel. Die Waffen rollen nach innen. Sie können die Geldbörse und das Zubehör nach oben und unten scrollen. Sie können sehen, dass sie beim Loslassen einrasten. Gerade als dieser Schnappschuss passiert, tritt ein Flimmern auf. Die einzigen Webkit-Animationen, die ich verwende, sind:
'-webkit-transition': 'none'
'-webkit-transition': 'all 0.2s ease-out'
'-webkit-transform': 'translate(XXpx, XXpx)'
Ich wähle entweder den ersten oder den zweiten Übergang, je nachdem, ob ich ihn animieren möchte oder nicht, und die Transformation ist die einzige Möglichkeit, Dinge zu bewegen.
Das größte Problem ist jedoch, wenn Sie auf "Elemente abgleichen" und dann auf "Erneut abspielen" klicken. Sie werden sehen, wie die Waffen animiert werden, der gesamte Hintergrund des Zubehörs / der Geldbörsen wird weiß. Kann mir bitte jemand einen Einblick geben, warum dies geschieht?
Versuchen Sie dies und hoffentlich hilft es:
quelle
quelle
#wrapper
Element anwenden, da das Aufbringen auf den Körper das Layout vermasseln würde.-webkit-backface-visibility: hidden;
verursachte, dass alle Skalentransformationen verschwommen waren.body {-webkit-transform:translate3d(0,0,0);}
arbeitete ein Vergnügen.scale(1)
verursachte das Flimmern.Die eigentliche Antwort für meinen Fall ist hier. Jemand war nah dran an: -webkit-backface-sichtbarkeit: versteckt; Die eigentliche Antwort lautet jedoch: Webkit-Backface-Sichtbarkeit: versteckt; muss zum übergeordneten div hinzugefügt werden .
quelle
-webkit-backface-visibility: hidden;
das übergeordnete Div, das animierte Div UND die Kinder des animierten Div hinzufügen . Sobald ich das getan habe, hat es einwandfrei funktioniert.Ich hatte auch ein Problem mit einem "flackernden" CSS-Übergang. Die fragliche Animation war ein Menü, das von außerhalb des Bildschirms eingeblendet wurde, und als die Animation beendet war, blitzte / flackerte das gesamte Menü.
Wie sich herausstellte, wurde dies durch eine tatsächliche iOS-Funktion verursacht, das "Tap Highlight" , das aus irgendeinem Grund nach Abschluss der CSS-Animation (dh weit nach dem eigentlichen Tap) aktiviert wurde und das gesamte Menü anstelle nur des Elements hervorhob das wurde abgehört. Ich habe das Problem "behoben", indem ich Tap-Highlight vollständig deaktiviert habe, wie hier beschrieben :
quelle
Michaels Antwort
-webkit-backface-visibility: hidden;
funktionierte, als wir auf dieses Problem stießen. Wir hattentranslateZ(0px)
auf unserem<body>
Tag, um einenIFRAME
Grenzfehler von iOS 3.1.3 und früher zu verhindern, und es verursachte, dass Animationen flackerten. Durch Hinzufügen-webkit-backface-visibility: hidden;
zu jedem von uns animierten Element wurde das Flimmern behoben! Lebensretter.quelle
Ich bemerkte, wenn ich einen Schwebezustand auf einem Div hatte, flackerte die Seite, selbst wenn ich kein CSS oder JS daran hatte. Vielleicht hilft das jemand anderem.
quelle
Wenn jemand feststellt, dass die Sichtbarkeit der Rückseite nicht funktioniert, können Sie sich die Eigenschaften ansehen, die sich bereits in Ihrem animierten Element befinden. Bei uns stellten wir fest, dass
overflow-y: scroll
einabsolute
oder einfixed
positioniertes Element unter iOS zu starkem Flackern führte.Einfach entfernen
overflow-y: scroll
behoben.quelle
overflow-y: scroll
hat meinem Fall geholfen. Ich danke dir sehr!Obwohl ich hatte
-webkit-transform-style: preserve-3d;
und-webkit-backface-visibility: hidden
das Flackern immer noch passierte.In meinem Fall war die Ursache die
z-index
. Das Erhöhen des aktiven Elements hat geholfen.quelle
Hier ist eine neue Lösung. Ich habe das Hintergrundbild mit jQuery eingestellt, und keiner der 3D-Rendering-Tricks hat funktioniert. Also habe ich versucht, stattdessen Klassen zu verwenden, um die Eigenschaften zu definieren. Voilà! Glatt wie Butter.
Dies verursacht Flimmern:
Tun Sie stattdessen:
mit definierten Klassen:
quelle
Versuchen Sie diese Lösung . Es funktioniert für mich in Phonegap + jQM 1.4.0 :
Ändere das
<meta name="viewport" content="width=device-width, initial-scale=1">
Dazu stattdessen:
<meta name="viewport" content="width=device-width, user-scalable=no" />
Lesen Sie hier mehr: http://www.fishycode.com/post/40863390300/fixing-jquery-mobiles-none-transition-flicker-in
quelle
Ich hatte viel Zeit damit verbracht, dieses Problem für Ember Animated Outlets, Phonegap und iOS- Setup herauszufinden .
Obwohl einfach, musste ich jedem übergeordneten Element der obersten Ebene, das in den CSS-Animationen enthalten war, einen Hintergrund hinzufügen. Mit anderen Worten, stellen Sie sicher, dass zu keinem Zeitpunkt in Ihren Ansichten ein Element vorhanden ist, das keinen Hintergrund hat.
Mein Setup war dies für jede Vorlage und allen drei Elementen wurde eine Hintergrundfarbe zugewiesen:
<header></header> <body class="content"></body> <footer></footer>
quelle
Anstatt den Übergang auf "alle" anzuwenden, geben Sie einfach den an, den Sie wirklich benötigen. Es entfernte das Flackern auf meinem Fall.
quelle
Ich habe alles versucht und hatte immer noch große Probleme mit dem Flackern von Firefox und Chrome. Ich habe es behoben oder zumindest stark auf ein akzeptables Problem reduziert, indem ich die Box-Shadow-Transformation entfernt habe, die während der Animation viele Neulackierungen verursacht hat. Ich folgte diesem und modifizierte für meine Bedürfnisse:
http://tobiasahlin.com/blog/how-to-animate-box-shadow/
quelle
Für mich wurde das flackernde Problem auf der Safari gelöst, indem
will-change: transform;
das animierte Element entfernt wurde.Ich könnte dieses Problem auch lösen, indem ich
overflow: hidden;
es dem übergeordneten Element hinzufüge , aber damit wurden alle Elemente mittransform: translateZ()
unwirksamquelle
Ich musste einen tatsächlichen Wert (anstelle von 0) verwenden:
Beispiel:
Nach dem, was ich gelesen habe , wird das Flimmern durch das Umschalten des Browsers zwischen Hardware- und Software-Rendering verursacht. Und ich denke, Browserhersteller sind sich der alten "translate3d (0,0,0)" bewusst, um das Hardware-Rendering zu erzwingen - daher ignorieren sie diese gefälschten Werte möglicherweise jetzt.
=> Die Verwendung eines tatsächlichen Wertes kann dazu führen, dass Dinge "hängen bleiben".
Jedenfalls hat für mich gearbeitet.
quelle
Beim Ausführen eines Folienübergangs bei Verwendung eines Standard-Android-Webbrowsers ist ein Flackern aufgetreten.
Ich habe die folgende Übergangs-CSS verwendet:
Keine der in diesem Thread erwähnten Problemumgehungen hat zur Lösung des Problems beigetragen. Endlich habe ich die Lösung gefunden. Die Quelle des Flackerns ist das Schlüsselwort all , mit dem alle möglichen Übergänge ausgeführt werden. Ich habe es geändert, um nur die Transformation durchzuführen, und das Problem wurde behoben:
quelle
Was es für mich behoben hat, war, die Zuweisung der Transform-Translate-CSS-Regel zu verzögern. Etwas wie das:
HTML:
CSS:
JavaScript (jQuery):
… Weil
-webkit-backface-visibility: hidden;
ich nichts für mich getan habe .quelle
Also habe ich eine Lösung für dieses Problem gefunden, bei der keine anderen richtig funktionierten.
CSS:
HTML:
Stellen Sie dann das
z-index
für Ihr animiertes Element auf> 1 ein. Dies bringt iOS-Geräte irgendwie dazu, die Animation anders zu rendern, und vermeidet das Flimmern in meinem Szenario. Das Anpassen von Z-Index-Werten kann hilfreich sein, wenn diese Lösung nicht sofort funktioniert.quelle
UPDATE 2019
Sie können das Flackern aktivieren, indem Sie diese Regeln einfach zu Ihrem Element hinzufügen, für das der Übergang verwendet wird.
Arbeitete für mich an Safarai
quelle