0

所以我有一个带有以下css的div:

#MyDiv {
    position: absolute;
    overflow: visible;
    top: 0px;
    right: 50%;
    width: 49%;
    height: 99%;
    min-width: 250px;
    min-height: 400px;
    max-width: 400px;
    max-height: 500px;
    background-color: #FFFFFF;
    border: 1px solid #000000;
    margin: 0 auto;
    padding: 0px;
}

我用jquery将它向右动画化了800像素。在 Firefox 中,最终位置是所需的位置,但是在 chrome 和 opera 中是错误的。

    alert($("#MyDiv").position().left);
    $("#MyDiv").animate({left: "+=" + 800 + "px"}, 1000, "linear", function() {
        alert($("#MyDiv").position().left);
    });

在 Firefox 中,初始左侧位置是 23(第一个警报),最后一个 823(第二个警报)在 chrome 和 Opera 中最终位置是 800

难道我做错了什么?需要保持 CSS 不变。

ps ie8 也有一些问题,但程度比 chrome 和 opera 要小

提前致谢。

编辑jsfiddle:http: //jsfiddle.net/Q8K2R/

4

2 回答 2

1

另一种方法是设置 cssleft属性,因为动画与 css 一起工作,这里不保证,左边的属性包含正确的计算数据,所以修复可以像

var mydiv=$("#MyDiv");
mydiv.css({left: mydiv.position().left});

动画 演示之前

于 2013-01-28T22:50:20.503 回答
0

为什么不在动画样式之前计算位置:

`var _left = $("#MyDiv").position().left + 800 + 'px';
$("#MyDiv").animate({left: _left}, 1000, "linear", function() {
    alert($("#MyDiv").position().left);
}); `   
于 2013-01-28T21:51:00.853 回答