Jquery animate()和谷歌浏览器问题

The*_*seG 5 jquery google-chrome jquery-animate

我在google Chrome中遇到了jquery和animate()的问题.我有一个最初隐藏的盒子,位于屏幕右侧.单击一个框时,隐藏框变为可见,并从右侧到中心动画,它停止并闪烁,然后它再次开始移动到屏幕的左侧并消失.这个东西适用于Explorer和Firefox,但不适用于Chrome.

这是链接:http: //test.gianlucaugolini.it/4545.html

这是代码:

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%");

    });
        });
        });
}
Run Code Online (Sandbox Code Playgroud)

Nic*_*ver 2

问题是100%样式leftCSS 属性与px此处使用的属性(使用-=100%,chrome 将其解释为0缺少有效值的像素......这意味着它正在工作,但远离可见区域的左侧)。

为了消除跨浏览器的问题,我建议坚持使用其中之一......并且由于您想以一种-=风格制作动画,我想说像素是这里的最佳选择。

这是您更改的示例,以便它left根据容器宽度设置:

$(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
            });
        });
    });
}
Run Code Online (Sandbox Code Playgroud)

你可以在这里测试一下,这个版本可以跨浏览器工作。