Je rencontre un problème avec jquery et animate () dans Google Chrome. J’ai une boîte qui est initialement cachée et positionnée à droite en dehors de l’écran. Lorsque vous cliquez sur une case, la case cachée devient visible et s’anime de la droite vers le centre. Elle s’arrête et clignote. Cette chose fonctionne sur Explorer et Firefox, mais pas sur Chrome.
C’est le lien: http://test.gianlucaugolini.it/4545.html
Et voici le code:
function test(){ var scaleX = $("#container").width()/2 + $("#hoverText").width()/2; $("#hoverText").animate({visibility:"visible",opacity:"show",left:"-="+scaleX+"px"},500,function(){ $("#hoverText").effect("highlight",{duration:1000},1500,function(){ $("#hoverText").animate({visibility:"hidden",opacity:"hide",left:"0%"},500,function(){ $("#hoverText").css("left","100%"); }); }); }); }
Le problème concerne les propriétés CSS de style left
100%
rapport aux propriétés px
utilisées ici (avec -=
et 100%
, chrome l’interprète comme étant une valeur de 0
pixel, valeur absente … ce qui signifie que cela fonctionne, mais à gauche. de la zone visible).
Pour éliminer le problème multi-navigateur, je vous recommande de vous en tenir à l’un ou à l’autre … et comme vous souhaitez animer dans un style -=
, je dirais que les pixels sont la solution.
Voici votre exemple modifié pour qu’il définisse la left
fonction de la largeur du conteneur:
$(document).ready(function() { $("#header_title").bind("click",test); }); function test(){ var cw = $("#container").width(); var scaleX = cw/2 + $("#hoverText").width()/2; $("#hoverText").css("left", cw).animate({ visibility: "visible", opacity: "show", left: "-="+scaleX+"px" }, 500, function() { $(this).effect("highlight",{ duration:1000 }, 1500, function() { $(this).animate({ visibility: "hidden", opacity: "hide", left: 0 }); }); }); }
Vous pouvez le tester ici , cette version fonctionnera sur plusieurs navigateurs.