1

これは私のアニメーションコードです

    function MoveTeleport(LeftRight,UpDown) {
        var TileMoveLeft = new Number(-LeftRight);
        var TileMoveUp = new Number(-UpDown);
        this.MovetoLeft = TileMoveLeft * 70 + 'px';
        this.MovetoUp = TileMoveUp * 70 + 'px';

        this.Move = function () {
            $('#Player').fadeTo(200,0.1);

            $('#Map_Player').animate({
                'left': '+=' + this.MovetoLeft,
                'top': '+=' + this.MovetoUp
            }, 1000, function () {
                LeftCurrent = $('#Map_Player').css('left', 10);
                UpCurrent = $('#Map_Player').css('top', 10);
                $('#Player').fadeTo(200, 1);
            });
        }
    }

FireFox、Opera、Chrome でとても素敵にアニメーション化されました。しかし、IE8ではうまく機能しません。なぜですか??またはIE 8で修正する方法は??

4

1 に答える 1

5

jQuery.animateやその他の同様のメソッドは、フレームごとに DOM 要素の CSS を再計算し、要素のstyleプロパティを更新します。フレームごとに、ブラウザーはサイトのレイアウトを再計算してレンダリングする必要があります。場合によっては、アニメーションにコストのかかるレイアウトの再計算が必要になることがあります (サイト要素のレイアウト方法、CSS などによって異なります)。IE8にはかなり古いレンダリングエンジンがあり、あなたの場合のレイアウトの再計算は高価すぎると思います. を取り除く以外にそれを修正する方法はありません.animate

パフォーマンスの問題は、昨日のSmashing Magazine.animateの記事で言及されていました- 読むと面白いかもしれません。

于 2013-01-16T11:23:42.407 に答える