Nehmen Sie eine sehr einfache CSS3 Animation Regel wie folgt aus:CSS3 Keyframe Animationen träge auf Retina Display
.dimension.fadeIn {
-webkit-animation: fadeIn 0.7s;
-webkit-animation-timing-function:ease-in-out;
height:24px;
}
@-webkit-keyframes fadeIn {
0% {
height:0;
opacity: 0;
}
30% {
height:24px; /* the default row (tr) height */
opacity: 0;
}
90% {
opacity: 1;
}
}
In Chrome auf jedem Display, mit Ausnahme des MacBook Retina-Display, läuft die Animation glatt wie Seide. Wenn wir es auf einer MBP-Netzhaut versuchen, läuft die Animation sichtbar langsamer und fühlt sich im Allgemeinen verzögert an.
Ich erlebe den gleichen Fall bei der Verwendung Transit (Wenn Sie eine Retina und ein externes Display haben, versuchen Sie Transit Demos (oder jede CSS3 Animation?), Vergleichen zwischen den beiden Bildschirmen und Sie sollten das Gefühl, dass es nicht so glatt ist wie Sie möchten)
Wir haben versucht, die GPU zu verwenden, indem Sie -webkit-transform: translateZ(0)
und auch einige andere Sachen wie -webkit-backface-visibility: hidden
aber vergeblich.
Also offensichtlich hat das Retina-Display eine höhere Pixeldichte, aber welche Ansätze können zur Lösung dieses Problems genommen werden?
IMHO Höhe Animieren immer Schwergängigkeit gibt. Versuchen Sie, ein anderes Attribut zu animieren. Wenn Sie zum Beispiel '-webkit-perspective' korrekt positionieren, können Sie mit 'translate: rotateY (-90deg)' den gleichen Effekt erzielen. Es ist nicht nur Netzhaut, wenn Sie ~ 1000 Elemente und belebte Höhe haben, ist es fehlerhaft. – drinchev
Ich animiere keine Höhe oder irgendetwas, das als langsamer betrachtet wird, dennoch beobachte ich das gleiche genaue Verhalten; auf Firefox und Chrome. – AlexG
Versuchen Sie, die Transformation zu transformieren: scaleY und sehen Sie, ob das hilft. Ich habe auch Tonnen von Kopfschmerzen mit völlig inakzeptabler Leistung mit dieser Art von Dingen. – Reasurria