86 votes

Les animations CSS de WebKit pour iPhone provoquent des scintillements

C'est le site de l'iphone : http://www.thevisionairegroup.com/projects/accessorizer/site/

Après avoir cliqué sur "Jouer maintenant", tu arriveras à un jeu. Les armes vont défiler. Tu peux faire défiler le sac à main et les accessoires de haut en bas. Vous pouvez voir que lorsque vous les lâchez, ils se mettent en place. Juste au moment où ils s'enclenchent, il y a un scintillement qui se produit. Les seules animations webkit que j'utilise sont :

'-webkit-transition': 'none'

'-webkit-transition': 'all 0.2s ease-out'

'-webkit-transform': 'translate(XXpx, XXpx)'

Je choisis la première ou la deuxième transition selon que je souhaite ou non l'animer, et la transformation est le seul moyen de déplacer les choses.

Le plus gros problème, c'est lorsque vous cliquez sur "Match items", puis sur "Play again". Vous verrez que lorsque les armes s'animent, l'arrière-plan des accessoires et des sacs à main devient blanc. Quelqu'un peut-il m'éclairer sur la raison de ce phénomène ?

128voto

Wes Baker Points 1225

J'ai ajouté -webkit-backface-visiblity et cela m'a aidé, mais j'avais toujours un scintillement initial après avoir rechargé la page. Lorsque j'ai ajouté -webkit-perspective: 1000 il n'y avait aucun scintillement.

-webkit-perspective: 1000;
-webkit-backface-visibility: hidden;

21 votes

Quelle est la magie derrière 1000 ? Toute autre valeur (>0) peut-elle fonctionner ?

0 votes

NOTE : ceci rend l'animation insensible aux événements de la souris sur Windows chrome v19 : en pratique, en ajoutant ceci, il n'y a pas de scintillement, mais l'animation ne démarre pas toujours (au survol de la souris ou autre).

0 votes

J'ai résolu mon problème : une simple div animée se déplaçait de 1px vers la gauche au début de l'animation dans Chrome 25, mais tout allait bien dans Safari 6.0.2 et Canary 27. Content que ça marche, j'aimerais bien comprendre pourquoi.

39voto

donohoe Points 6476

Essayez ceci, et j'espère que ça vous aidera :

#game {
  -webkit-backface-visibility: hidden;
}

2 votes

Cela fonctionne très bien dans Safari par défaut mais échoue en mode autonome. Avez-vous une idée ?

19voto

Brian D'Astous Points 696
body {-webkit-transform:translate3d(0,0,0);}

1 votes

C'est ce que j'ai fait pour moi, mais j'ai dû l'appliquer sur une feuille de papier. #wrapper car l'appliquer sur le corps de l'appareil perturberait la mise en page.

0 votes

Si quelqu'un veut voir la face arrière "-webkit-backface-visibility : hidden ;" ne fonctionnait pas, mais celui-ci est parfait. Merci !

0 votes

Parfait. -webkit-backface-visibility: hidden; a rendu floues toutes les transformations d'échelle. body {-webkit-transform:translate3d(0,0,0);} a fonctionné à merveille.

12voto

Johan De Silva Points 91

La réponse réelle pour mon cas est ici. Quelqu'un était proche avec : -webkit-backface-visibility : hidden ; Mais la vraie réponse est -webkit-backface-visibility : hidden ; doit être ajouté à l'option parent div.

0 votes

En fait, j'ai dû ajouter -webkit-backface-visibility: hidden; à la division parent, à la division animée, ET aux enfants de la division animée. Une fois que j'ai fait ça, ça a fonctionné sans problème.

2 votes

Je pense que ça a aussi réglé mon scintillement en l'ajoutant au parent. Que fait-il en réalité ?

0 votes

Le fait de l'ajouter au parent annule la position "fixe" sur les éléments enfants :(

11voto

x3ro Points 12721

J'ai également eu un problème avec une transition CSS "vacillante". L'animation en question était un menu glissant depuis le hors-écran, et juste au moment où l'animation se terminait, le menu entier clignotait.

Il s'est avéré que ce problème était dû à une fonctionnalité réelle d'iOS, la fonction "mettre en évidence" qui, pour une raison ou une autre, s'est déclenchée après la fin de l'animation CSS (c'est-à-dire bien après le tapotement), et a mis en évidence l'ensemble du menu au lieu de l'élément qui a été tapé. J'ai "corrigé" le problème en désactivant complètement le tap-highlight, comme décrit ci-dessous. aquí :

-webkit-tap-highlight-color: rgba(0,0,0,0);

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X