Beim Schweben über den CSS-Übergang in Safari werden bestimmte Schriftfarben aufgehellt
In meinem CSS habe ich definiert, dass ein übergang für eine Klasse. Aus irgendeinem Grund, wenn ich den Mauszeiger über die Klasse mit dem übergang, der transition-duration
aus irgendeinem Grund ändert sich die Farbe der Schrift an anderer Stelle (Formular-Platzhalter und bestimmte Verknüpfungen (links). (Dies geschieht nur im Safari so weit wie ich das beurteilen kann.)
Hier ein jsFiddle, das zeigt, über was ich spreche:
Weiß jemand, warum dies geschieht und wie kann ich es verhindern?
InformationsquelleAutor der Frage tvalent2 | 2011-10-30
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich war kämpfen mit einem ähnlichen Problem.
Für mich, zufällige links innerhalb der Seite wurde anscheinend Fett (klar, so etwas zu tun mit OSX und anti-aliasing in Safari, als auch Chrome (windows 7 und OSX) sowie die gleiche version von Safari bei Windows funktionierte gut.
Ist die Lösung nicht offensichtlich ist, und je nachdem, was Sie tun, ist vielleicht nicht optimal, aber das hinzufügen dieser Codezeile das Problem:
Diese im Grunde löst die GPU zu tun, animation, und der text hatte nicht mehr die Artefakte in meiner Website. Bitte beachten Sie, dass es nicht immer sinnvoll, es zu benutzen, wie es kann verwenden mehr Batterie Leben und mehr Ressourcen. Manchmal verwendet es jedoch weniger, so dass im Grunde überprüfen Sie die Leistung, wenn Sie es hinzufügen.
Fügen Sie diese zu den normalen Zustand nicht die :hover-animierten Zustand.
Als Gegensatz zu auf dem:
Den anderen sehr positiver Nebeneffekt ist, dass abhängig von der animation, die Sie tun, könnte es sein, glatter durch die GPU. Also Sie wird nicht die abgehackte animation, die Sie erwähnen in Ihrem follow-up-post. In meinem Fall wurde die animation nahtlos in safari. Ich hatte einen 120% - Skala und 5-Grad-Drehung des Bildes mit einigen box-shadow erscheinen zur gleichen Zeit. In meiner situation dauerte es nicht reduzieren die CPU-Auslastung leider.
InformationsquelleAutor der Antwort Mauricio
Kann ich Euch nicht sagen, warum es dies zu tun, aber Safari ist nicht ändern Sie Ihre text-Farbe, es ist anti-aliasing der text anders, während der übergang ist in Bewegung. Die text-Ränder sind glatter, und der text selbst wird dünner. Dieses extra ist offensichtlich, wenn Sie zoom in auf der Geige mit Barrierefreiheit-tools. Bei einigen kleineren Größen, die Schattierung um die Taste neben dem text verschiebt sich auch. (Ist es möglich, dass Safari ist Neuzeichnen einige Dinge, oder die Umorientierung auf eine sub-pixel-Ebene, während die übergänge ? Jemand erklären Sie bitte, es treibt mich in den Wahnsinn jetzt!)
Weil ich habe keine wirkliche Ahnung, warum es tut dies entweder, könnten diese nicht die besten Lösungen:
Je nachdem, was Sie sind, verändern, austauschen der css transform-mit einer javascript-animation wird wahrscheinlich beheben.
Zum Beispiel in Ihrer fiddle das problem auch aufgetreten mit einer Skala transformation, aber nicht mit einer ähnlichen die jQuery animate Funktion.
Scheint es einige Schattierungen und Stilen, wo das anti-aliasing ändern, ist weniger offensichtlich (zumindest im fiddle), so könnte man auch versuchen, das styling der Platzhalter und anderen erfolgt text unterschiedlich.
(Dieser thread kann helfen, mit styling die Platzhalter, wenn Sie diesen Weg gehen: Ändern Sie eine HTML5-input - placeholder color mit CSS )
InformationsquelleAutor der Antwort Brid
Dank der Identifizierung von anti-aliasing oben, sowie Hilfe aus dem Artikel unten, ich meine modifizierten code zum einbinden
translate3d(0,0,0)
und das problem verschwand:Den übergang nicht so glatt wie es einmal war, aber das ist ein Thema für eine andere Frage.
Wonky text-anti-aliasing beim drehen mit webkit-transform in Chrom
http://johanbrook.com/design/css/a-fix-for-antialiasing-issues-in-webkit-browsers/
http://www.webkit.org/blog/386/3d-transforms/
InformationsquelleAutor der Antwort tvalent2
Es ist nicht mehr relevanten Thema habe ich gefunden für ein problem, das ich hatte, aber, dass der in Zusammenhang mit oben genannten Problem. So, könnte hilfreich sein für manche.
In zwei Worten: ich habe einige container (popup), einige element im inneren.
Erscheinen geht den folgenden Weg: container-hintergrund verblassen bis zu dunklen über die Deckkraft und das element im inneren ist das scaling-up (wie kommen uns näher von hinten). Alles Super funktioniert überall, aber nicht in Safari (Mac/Win/iPhone). Safari "zunächst" zeigt meine container, aber es blinkt seltsame Weise (winzig kurzes blinken angezeigt).
Nur durch das hinzufügen von-webkit-transform: translateZ(0); (container!!!) Tat helfen.
Aber sprechen die übergänge, gab es auch den folgenden Teil des Codes:
wenn man bedenkt, dass ich möchte, um zu zeigen/verbergen der popup mit nur css Umschalten (und auch, um Sie verschwinden schön statt einfach nur "display:none").
also irgendwie nach erscheinen von Safari (offensichtlich) war Erben übergang Eigenschaften neben "Deckkraft" ja, wie ich es habe überladen Sie nur mit -webkit-transition: opacity .5s;
so, Sie die folgenden das problem gelöst:
InformationsquelleAutor der Antwort Agat
ich hatte das gleiche problem, während ein übergang text wurde geglättet. dies geschieht nur in der Anker-text, die positioniert sind, relativ e mit z-index innerhalb eines Elements positioniert und mit z-index selbst.
wenn ich entfernen Sie alle position und index das problem verschwinden.
InformationsquelleAutor der Antwort ganchan
Gibt es ein ähnliches problem mit
transition
undtranslate3d
. Manchmal jedes element auf der Seite mit:hover
styles zeigt seine hover-Verhalten. Ich habe dieses problem mit einem slider. Setzen Sie die-webkit-transform: translateZ(0);
zu den:hover
element, und sein Verhalten ist normal.InformationsquelleAutor der Antwort Johann Heyne
Für rotation() vielleicht ist es in Ordnung, aber für scale() Es hat nicht funktioniert
-webkit-transform: translateZ(0);
Formel.Verwendet habe ich :
InformationsquelleAutor der Antwort Despertaweb