Ceci est le site iphone: http://www.thevisionairegroup.com/projects/accessorizer/site/
Après avoir cliqué sur "jouer maintenant", vous arriverez à une partie. Les armes défileront. Vous pouvez 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. Au moment même où il se produit, un scintillement se produit. Les seules animations de kit Web que j'utilise sont les suivantes:
'-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 en fonction de l’animation souhaitée ou non, et la transformation est le seul moyen de déplacer les éléments.
Le plus gros problème, cependant, est lorsque vous cliquez sur "Match items", puis sur "Play again". Vous verrez que lorsque les armes s'animent, tout l'arrière-plan des accessoires/porte-monnaie devient blanc. Quelqu'un peut-il s'il vous plaît me rayonner avec un aperçu de pourquoi cela se produit?
J'ai ajouté -webkit-backface-visiblity
et cela a surtout 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;
Essayez ceci et espérons que cela vous aidera:
#game {
-webkit-backface-visibility: hidden;
}
body {-webkit-transform:translate3d(0,0,0);}
La réponse réelle pour mon cas est ici. Quelqu'un était proche avec: -webkit-backface-visibilité: caché; Mais la vraie réponse est -webkit-backface-visibilité: hidden; doit être ajouté au parent div.
J'ai également eu un problème avec une transition CSS "scintillante". L'animation en question était un menu glissant depuis le fond de l'écran et, juste à la fin de l'animation, tout le menu clignotait/clignotait.
Il s’est avéré que cela était dû à une fonctionnalité iOS réelle, le "tap tape" , qui pour une raison quelconque a été lancé après la fin de l’animation CSS (c’est-à-dire bien après le tapotement actuel), et a mis en évidence le menu entier de seulement l'élément qui a été exploité. J'ai "corrigé" le problème en désactivant entièrement Tap-Highlight, comme décrit ici :
-webkit-tap-highlight-color: rgba(0,0,0,0);
La réponse de Michael-webkit-backface-visibility: hidden;
a fonctionné lorsque nous avons rencontré ce problème. Nous avions translateZ(0px)
sur notre balise <body>
pour empêcher un bogue limite iOS 3.1.3 et version antérieure IFRAME
; L'ajout de -webkit-backface-visibility: hidden;
à chaque élément que nous avons animé a corrigé le scintillement! Épargnant de vie.
div { -webkit-tap-highlight-color: rgba(255, 255, 255, 0); }
j'ai remarqué que lorsque j'avais un état de survol sur une div, la page scintillait, même si je n'avais aucun fichier CSS ou js associé. peut-être que cela aide quelqu'un d'autre.
Si quelqu'un trouve que la visibilité de la face arrière ne fonctionne pas, vous pouvez consulter les propriétés déjà présentes sur votre élément animé. Pour nous, nous avons constaté que overflow-y: scroll
sur un élément positionné absolute
ou fixed
provoquait un scintillement important sur iOS.
Il suffit de supprimer overflow-y: scroll
pour le corriger.
Même si j'avais -webkit-transform-style: preserve-3d;
et -webkit-backface-visibility: hidden
le scintillement se produisait toujours.
Dans mon cas, la cause était le z-index
. L'augmenter sur l'élément actif a aidé.
J'ai donc trouvé une solution à ce problème où aucun autre ne fonctionnait correctement.
CSS:
.ios-animation-fixer {
position: fixed;
width: 100%;
height: 10px;
top: -10px;
background-color: green;
z-index: 1;
pointer-events: none;
visibility: hidden;
}
HTML:
<div class="ios-animation-fixer"></div>
Puis définissez le z-index
pour que votre élément animé soit> 1. Cela aide en quelque sorte les périphériques iOS à rendre l'animation différemment et évite le scintillement dans mon scénario. Ajuster les valeurs z-index peut être utile si cette solution ne fonctionne pas hors de la porte.
Au lieu d'appliquer la transition à "tous", indiquez simplement celle dont vous avez réellement besoin. Cela a enlevé le scintillement de mon cas.
Voici une nouvelle solution. Je réglais l'image d'arrière-plan avec jQuery, et aucune des astuces de rendu 3d n'a fonctionné. J'ai donc essayé d'utiliser des classes pour définir les propriétés. Voilà! Lisse comme du beurre.
Cela provoque un scintillement:
$('#banner').css('backgroundImage', 'url("slide_1.jpg")';
Au lieu de faire:
$('#banner').attr('class', '.slide-1');
avec des classes définies:
#banner { -webkit-transition: background-image .25s; }
.slide-1 { background-image: url("slide_1.jpg"); }
.slide-2 { background-image: url("slide_2.jpg"); }
J'ai eu des scintillements lors d'une transition de diapositive avec un navigateur Web Android par défaut.
J'ai utilisé le css de transition suivant:
-webkit-transition: all 2s;
-webkit-transform: translate(100%,0);
Aucune des solutions de contournement mentionnées dans ce fil n'a permis de résoudre le problème… .. Enfin, j'ai trouvé la solution. La source de scintillement est le mot-clé all qui signifie effectuer toutes les transitions possibles. Je l'ai changé pour effectuer uniquement la transformation et le problème a été résolu:
-webkit-transition: -webkit-transform 2s;
-webkit-transform: translate(100%,0);
Je devais utiliser une valeur réelle (plutôt que 0):
.no-flick{
-webkit-backface-visibility: hidden;
backface-visibility: hidden;
-webkit-transform:translateZ(0.1px);
transform: translateZ(0.1px); /* needs an actual value */
}
Exemple:
<div class="foo no-flick"></div>
D'après ce que j'ai lu , le scintillement est causé par le basculement du navigateur entre le rendu matériel et logiciel. Et je pense que les fabricants de navigateurs sont conscients du fait que "translate3d (0,0,0)" existe déjà pour forcer le rendu du matériel. Ils peuvent donc ignorer ces fausses valeurs.
=> L'utilisation d'une valeur réelle peut provoquer un "blocage" des choses.
En tout cas, a travaillé pour moi.
J'ai essayé tout ce qui précède et des problèmes majeurs de scintillement persistaient sous Firefox et Chrome. Je l'ai corrigé, ou du moins considérablement réduit à un problème acceptable en supprimant la transformation Box-Shadow qui provoquait de nombreux repeints pendant l'animation. J'ai suivi cela et modifié pour mes besoins:
Pour moi, ce qui a été résolu, c’est de retarder l’attribution de la règle CSS transformation-traduction. Quelque chose comme ça:
HTML:
<div class="animate-this loading"></div>
CSS:
.animate-this {
&:not(.loading) {
transform: -webkit-translate(50px);
transform: translate(50px);
transition: -webkit-transform 0.3s, transform 0.3s;
}
}
JavaScript (jQuery):
$(document).ready(function(){
window.setTimeout(function(){
$('.animate-this').removeClass('loading');
}, 250);
});
… Parce que -webkit-backface-visibility: hidden;
n'a pas fait rien pour moi.
Essayez ceci solution. Cela fonctionne pour moi dans Phonegap + jQM 1.4.0:
Changer ce <meta name="viewport" content="width=device-width, initial-scale=1">
Pour cela à la place:
<meta name="viewport" content="width=device-width, user-scalable=no" />
En savoir plus ici: http://www.fishycode.com/post/40863390300/fixing-jquery-mobiles-none-transition-flicker-in
pour moi, le problème de scintillement sur safari résolu en supprimant will-change: transform;
de l'élément animé.
je pourrais aussi résoudre ce problème en ajoutant overflow: hidden;
au parent, mais avec cela, tous les éléments avec transform: translateZ()
sont devenus inefficaces
J'avais passé beaucoup de temps à essayer de résoudre ce problème pour Ember Animated Outlets, Phonegap et iOS setup.
Bien que simple, j'ai dû ajouter un arrière-plan à chaque élément parent de niveau supérieur inclus dans les animations CSS. En d’autres termes, assurez-vous qu’à aucun moment dans vos vues il n’existe un élément qui n’a pas d’arrière-plan.
Ma configuration était la suivante pour chaque modèle et une couleur d’arrière-plan était affectée aux trois éléments:
<header></header>
<body class="content"></body>
<footer></footer>