首頁 >web前端 >js教程 >js實作模擬滑鼠拖曳事件(附圖文實例)

js實作模擬滑鼠拖曳事件(附圖文實例)

藏色散人
藏色散人轉載
2022-08-07 10:13:503840瀏覽

本文實例為大家分享了JavaScript實作滑鼠拖曳效果的具體程式碼,供大家參考,具體內容如下

##這次的效果圖如下:

我認為這個實驗的困難是保持盒子和滑鼠的相對位置不變,透過滑鼠按下和移動來實現拖曳的效果

##如何實現拖曳的效果呢?

我們需要用到三個函數:

onmousedown

onmousemoveonmouseup,分別表示滑鼠按下、滑鼠移動、滑鼠抬起

滑鼠按下#的回呼函數中,我們需要透過clientXclientY來取得滑鼠的初始位置,透過offsetLeftoffsetTop取得盒子的初始位置,然後計算滑鼠初始位置和盒子初始位置的差值;

滑鼠移動的回呼函數中,我們需要根據滑鼠的位置和先前計算得到的差值來取得盒子現在的位置,然後改變其left和top值,不要忘記將position設為absolute (因為我就忘記了。。。)

滑鼠抬起

的回呼函數中,我們需要清除滑鼠移動和滑鼠抬起,透過將onmousemoveonmouseup值設定為null即可還要

注意! ! !

滑鼠移動函數和抬起函數都要寫在滑鼠按下函數中,因為我們是要在滑鼠按下這個動作之後來設計之後的行為,而且

很重要的一點是:

滑鼠按下函數是p的,滑鼠移動和滑鼠抬起是document的

因為我們的意思並不是滑鼠在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+&#39;px&#39;;
                box.style.top=event.clientY-disy+&#39;px&#39;;
            }

            //要写在ommousedown里面
            document.onmouseup=function(){
                //这俩都要置为null
            document.onmousemove=null;
            document.onmouseup=null;
            return false;
        }
        }
        
    </script>
</body>
</html>

相關推薦:【

JavaScript影片教學

以上是js實作模擬滑鼠拖曳事件(附圖文實例)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:jb51.net。如有侵權,請聯絡admin@php.cn刪除