この記事では、js を使用して任意の要素を指定した位置に移動する方法を主に紹介します。必要な友達はそれを参照できるようにします。== == == 2 つのパラメータを渡す必要があります。 1 つは移動する要素、もう 1 つは指定された位置ターゲットです。
要素の現在位置を取得し、各移動の距離ステップを設定し、タイマーを設定して、複数の円移動を通じて目標位置に到達します。現在の位置とターゲット位置の間の距離に基づいてループを実行する必要があるかどうかを決定します
この記事を例として取り上げます。ここにはいくつかの落とし穴があります:
1. 要素を移動するには、要素を分離する必要があります。ドキュメント フローから、つまり CSS スタイルで絶対位置を使用する必要があります2. ボタンが継続的にクリックされると、タイマーが生成されます
。
===》解決策: タイマーを 1 つだけ設定し、タイマーを実行します。最後の操作の影響を防ぐために、事前にタイマーをクリーニングしてください。オブジェクトのプロパティに従って設定できるタイマーは 1 つだけです。オブジェクト上でクリックされたプロパティは 1 つだけです。つまり、element.timer1=setInterval();
3。要素の現在位置を取得するには、offsetLeft / offsetTop / offsetWidth / offsetHeight を使用する必要があります。結果は px
を使用せずに数値型になります。
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <style> div{ width: 200px; height: 130px; background: red; position: absolute; left: 20px; } </style> </head> <body> <input type="button" value="按钮1" id="btn"/> <input type="button" value="按钮2" id="btn2"/> <div id="dv"> </div> <script> document.getElementById("btn").onclick=function(){ animate(document.getElementById("dv"),400); }; document.getElementById("btn2").onclick=function(){ animate(document.getElementById("dv"),1600); }; //把任意元素移动到指定的目标位置 function animate(element,target){ clearInterval(element.timer1); element.timer1=setInterval(function(){//element是一个对象,对象点出来的属性有且只有一个,避免多次点击按钮产生多个定时器 var current=element.offsetLeft; //获取当前位置,数字类型,没有px。 //不可以用element.style.left,因为该写法只能获取到行内样式,不能获取到<style></style>标签内的样式 var step=10;//每次移动的距离 step=current<target?step:-step;//step的正负表示了向左或是向右移动 current+=step; //计算移动到的位置,数字类型,没有px if(Math.abs(target-current)>Math.abs(step)){//当离目标位置的距离大于一步移动的距离 element.style.left=current+"px";//移动 }else{//当间距小于一步的距离,则清理定时器,把元素直接拿到目标位置 clearInterval(element.timer1); element.style.left=target+"px"; } },20); } </script> </body> </html>
以上 この記事の内容は以上です。その他の関連コンテンツについては、PHP 中国語 Web サイトをご覧ください。
関連する推奨事項:
JSエフェクト関数の実装についてjs配列をランダムにソートする方法以上がjsは任意の要素を指定された位置に移動しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。