この記事の例では、JavaScript でマウス ドラッグ効果を実現するための具体的なコードを共有します。具体的な内容は次のとおりです。
今回のレンダリングは次のとおりです。
この実験の難しい点は、ボックスとマウスの相対位置を変えずに、マウスを押して動かすことでドラッグ効果を実現することだと思います。
それを実現する方法 ドラッグの効果はどうですか?
3 つの関数を使用する必要があります:onmousedown、
onmousemove、
onmouseup。これらはそれぞれマウスの押下、マウスの移動、マウスを表します。 raises
mouse pressed のコールバック関数では、clientX および
clientY を通じてマウスを取得する必要があります。ボックスの初期位置は
offsetLeft と
offsetTop によって取得され、マウスの初期位置とボックスの初期位置の差が計算されます。
マウスの動きコールバック関数では、マウスの位置と以前に計算された値の差に基づいてボックスの現在位置を取得し、その位置を変更する必要があります。 left と top の値です。位置を絶対値に設定することを忘れないでください (忘れてしまったので...)
mousemove のコールバック関数で、マウスの動きとマウスをクリアする必要があります。 onmousemove を変更して持ち上げます。また、
onmouseup の値を null に設定することもできます。
マウス移動関数と持ち上げ関数の両方をマウス押下関数内に記述する必要があります。これは、マウスを押下した後の動作を設計する必要があるためです。
は非常に重要です。 ワンポイントは:マウス プレス機能は p で、マウスの動きとマウス リフトはドキュメントです。
マウスが p 上にあるという意味ではないためです。ページ全体を移動するのではなく、
重要なポイントはおそらく次のとおりです。コードは次のとおりです:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <style> #box{ width: 100px; height: 100px; background-color: aquamarine; border-radius: 14px; box-shadow: 2px 2px 6px rgba(0,0,0,.3); /* 好家伙 都没设置定位 就想移动 改变left。。。 */ position: absolute; } </style> </head> <body> <div id="box"></div> <script> let box=document.getElementById("box"); box.onmousedown=function(event){ let disx=event.clientX-box.offsetLeft; let disy=event.clientY-box.offsetTop; //此处不是box.onmousemove,是document.onmousemove document.onmousemove=function(event){ box.style.left=event.clientX-disx+'px'; box.style.top=event.clientY-disy+'px'; } //要写在ommousedown里面 document.onmouseup=function(){ //这俩都要置为null document.onmousemove=null; document.onmouseup=null; return false; } } </script> </body> </html>
関連する推奨事項: [
JavaScript ビデオ チュートリアル以上がマウス ドラッグ イベントをシミュレートする js (画像とテキストの例付き)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。