ตัวอย่างในบทความนี้จะแชร์โค้ดเฉพาะสำหรับการตระหนักถึงเอฟเฟกต์การลากเมาส์ใน JavaScript สำหรับการอ้างอิงของคุณ เนื้อหาเฉพาะมี
ดังนี้
ฉันคิดว่าความยากของการทดลองนี้คือการรักษาตำแหน่งสัมพัทธ์ของกล่องและเมาส์ให้ไม่เปลี่ยนแปลง ทำอย่างไรจึงจะได้เอฟเฟกต์การลากโดยการกดและเลื่อน
เมาส์
เราจำเป็นต้องใช้สามฟังก์ชัน: onmousedown
, onmousemove
และ onmouseup
ซึ่งตามลำดับแทนการกดเมาส์ การเคลื่อนเมาส์ และการยกเมาส์ ตามลำดับ
ในฟังก์ชันการโทรกลับของ การกดเมาส์ เราจำเป็นต้องได้รับตำแหน่งเริ่มต้นของเมาส์ผ่าน clientX
และ clientY
และผ่าน offsetLeft
และ offsetTop
จะได้รับตำแหน่งเริ่มต้นของกล่อง จากนั้นคำนวณความแตกต่างระหว่างตำแหน่งเริ่มต้นของเมาส์และตำแหน่งเริ่มต้นของกล่อง
ในฟังก์ชันการเรียกกลับของ การเคลื่อนไหวของเมาส์ เราจำเป็นต้องได้รับตำแหน่งปัจจุบันของ กล่องตามความแตกต่างระหว่างตำแหน่งเมาส์และตำแหน่งที่คำนวณไว้ก่อนหน้า แล้วเปลี่ยนค่าด้านซ้ายและค่าบนสุด อย่าลืมตั้งค่าตำแหน่งเป็นสัมบูรณ์ (เพราะฉันเพิ่งลืม...)
ในฟังก์ชันโทรกลับ ของ การยกเมาส์ เราต้องล้างการเคลื่อนไหวของเมาส์และการยกเมาส์โดยตั้งค่า onmousemove
และ onmouseup
เป็น nullยัง
ให้ ความสนใจ! - -
ทั้งฟังก์ชันการเลื่อนเมาส์และฟังก์ชันการยกเมาส์จะต้องเขียนในฟังก์ชันการกดเมาส์ เนื่องจากเราจำเป็นต้องออกแบบพฤติกรรมที่ตามมาหลังจากการกดเมาส์ และ จุดที่สำคัญมากคือ:
ฟังก์ชันการกดเมาส์คือ p และเมาส์ การเลื่อนและการยกเมาส์อยู่ในเอกสาร
เพราะเราไม่ได้หมายถึงการเลื่อนเมาส์ใน p แต่ย้ายทั้งหน้า
ประเด็นสำคัญน่าจะเป็นดังนี้:
<!DOCTYPE html> <html> <หัว> <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>เอกสาร</title> <สไตล์> #กล่อง{ ความกว้าง: 100px; ความสูง: 100px; สีพื้นหลัง: พลอยสีฟ้า; รัศมีเส้นขอบ: 14px; กล่องเงา: 2px 2px 6px rgba (0,0,0,.3); /* คนดีอยากขยับเปลี่ยนซ้ายไม่กำหนดตำแหน่ง - - - ตำแหน่ง: แน่นอน; - </สไตล์> </หัว> <ร่างกาย> <div id="กล่อง"></div> <สคริปต์> ให้กล่อง=document.getElementById("กล่อง"); box.onmousedown=function(เหตุการณ์){ ให้ disx=event.clientX-box.offsetLeft; ให้ disy=event.clientY-box.offsetTop; //นี่ไม่ใช่ box.onmousemove แต่เป็น document.onmousemove document.onmousemove=function(เหตุการณ์){ box.style.left=event.clientX-disx+'px'; box.style.top=event.clientY-disy+'px'; - //จะเขียนใน omniusedown document.onmouseup=function(){ //ทั้งสองอย่างนี้จะต้องตั้งค่าเป็นโมฆะ เอกสาร.onmousemove=null; document.onmouseup=null; กลับเท็จ; - - </สคริปต์> </ร่างกาย> </html>
คำแนะนำที่เกี่ยวข้อง: [วิดีโอสอน JavaScript]
ด้านบนคือเนื้อหาโดยละเอียดของ js เพื่อจำลองเหตุการณ์การลากเมาส์ (พร้อมตัวอย่างรูปภาพและข้อความ) สำหรับข้อมูลเพิ่มเติม โปรดอ่านบทความอื่นๆ ที่เกี่ยวข้องบนเว็บไซต์ภาษาจีน PHP !