0

DOM 要素をゆっくりと移動するにはどうすればよいですか? これは動作しません

 for ( var a = 0 ; a < 100 ; a++){

    $('*').each(function(){

      if ( ! /HTML/.test($(this).context.nodeName))
      {
        var top =  parseInt($(this).css('top')) + 1;

        $(this).css('top',top + "px");
      }

    });
  }

ループが終了すると要素が配置されます

これをゆっくりするにはどうすればよいですか?

私の英語でごめんなさい

4

3 に答える 3

1

または、純粋なJavaScriptでは、タイマーを使用する必要があります

var $elem = $(this), // jquery object
    elem = $elem[0], // dom element
    currentPos = $elem.offset().top, // current position
    targetPos = currentPosition + 100, // target position
    timer = setInterval (function () { // timer to move element slowly
        currentPos++;
        $elem.css('top',currentPosition + "px");
        if (currentPos == targetPos)
            clearInterval(timer);
    }, 100);
于 2012-08-25T23:28:29.130 に答える
1

jquery の$.animate() を試してください

連続的な移動ではなく、移動するターゲット位置を設定する必要があります

またはsetIntervalを使用:

intervalInMilliseconds=17;//60 frames per second
var interval = setInterval(function()
{
for ( var a = 0 ; a < 100 ; a++){

    $('*').each(function(){

      if ( ! /HTML/.test($(this).context.nodeName))
      {
        var top =  parseInt($(this).css('top')) + 1;

        $(this).css('top',top + "px");
      }

    });
  }
},intervalInMilliseconds);

これを行うことで、完了したら停止します。

clearInterval(interval)
于 2012-08-25T23:11:21.857 に答える
0

十分に新しいブラウザー バージョンをターゲットにしている場合は、代わりにCSS アニメーションを使用できます。

于 2012-08-25T23:33:59.243 に答える