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 (2 番目のアラート) は chrome と Opera で、最終的な位置は 800 です。

私は何か間違ったことをしていますか?CSS を変更しないようにする必要があります。

ps ie8 にもいくつかの問題がありますが、クロムやオペラほどではありません。

前もって感謝します。

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 に答える