亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

js實現回放拖拽軌跡從過程上進行分析

2019-11-20 14:23:50
字體:
來源:轉載
供稿:網友

今天有點小高興,csdn博客瀏覽量過萬了,在過去還從來沒有過這么高的瀏覽量呢,不得不說,太多時候還是有些矯情,可看到這些鼓勵還是忍不住高興啊,至少,這樣讓我有一種行內人員的感覺,吾道不孤啊。

閑話不多說,繼續今天的記錄,記錄回放拖拽痕跡,先從過程上進行分析:

1、要實現回放拖拽痕跡,則必須先有記錄;

2、要記錄拖拽痕跡,則必須要實現拖拽;

這個問題前幾天曾經做到過,當時實現的也略有瑕疵,但大致的實現方法已經了然于胸,所以今天在實現這個問題的時候速度快了不少,著實高興了一番,今天再實現了一遍之后理解上又深了一點,那就今天再來記錄下;

至于記錄拖拽痕跡,這個分析就來長話短說,畢竟做過一次了:

1、確定現在div的位置和狀態,保證absolute才能實現拖動;

2、監聽鼠標拖動事件(昨天總結的幾種鼠標事件);

3、根據相應的鼠標事件,做出相應的響應,在onmousemove拖拽中記錄div存在過的點;

4、監聽鼠標彈起事件,來結束拖拽事件和點的記錄

任然是先來實現下代碼(這里將所有代碼同時列出,后面逐一分析):

html語言:

<div style="width: 50px;height: 50px;background-color: cyan;display: block;position: absolute;" id="showZone"></div>//這個還是那么熟悉啊 <a href="#" style="position: absolute;margin-top: 100px;color: yellow;background-color: red;">reback</a>//這個是來回放的

javascript部分:

window.onload=function(){ var obj=document.getElementById("showZone"); var disX=disY=0; var dragIf=false; var position=[{x:obj.offsetLeft,y:obj.offsetTop}];//這個是實現記錄和回放的關鍵,其它都是基本元素的獲取 var oa=document.getElementsByTagName("a")[0]; obj.onmousedown=function(event){ var event=event||window.event; disX=event.clientX-obj.offsetLeft;//鼠標相對于div邊框的距離 disY=event.clientY-obj.offsetTop; dragIf=true;//可以進行拖拽的標志 position.push({x:obj.offsetLeft,y:obj.offsetTop});//記錄從這時候就開始了 return false; }; document.onmousemove=function(event){ if(!dragIf)return;//這個判斷極為重要,只有按下的移動才有效 var event=event||window.event; var nowX=event.clientX-disX;//根據上面記錄的鼠標相對div的距離就知道div相對網頁的距離了吧 var nowY=event.clientY-disY; var maxX=document.documentElement.clientWidth-obj.offsetWidth;//這里是offsetWidth,是div的寬度,不是offsetLeft var maxY=document.documentElement.clientHeight-obj.offsetHeight; nowX=nowX<0?0:nowX;//這些判定,只是判斷不要出了邊界 nowY=nowY<0?0:nowY; nowX=nowX>maxX?maxX:nowX; nowY=nowY>maxY?maxY:nowY; obj.style.marginTop=obj.style.marginLeft=0; obj.style.left=nowX+"px";//不要忘記+“px”,只有style.left/top是有“px”的 obj.style.top=nowY+"px"; position.push({x:nowX,y:nowY});//不停記錄啊 obj.innerHTML="X:"+nowX+"Y:"+nowY;//直觀的看到變化 return false; }; document.onmouseup=function(){ dragIf=false;//不允許再進行拖拽和記錄了 obj.innerHTML="X:"+obj.offsetLeft+"Y:"+obj.offsetTop; }; oa.onclick = function (){ if (position.length == 1) return;//只有一個的時候,說明并未移動 var timer = setInterval(function (){ var oPos = position.pop(); oPos ? (obj.style.left = oPos.x + "px", obj.style.top = oPos.y + "px") : clearInterval(timer);//又被這個寫法驚艷到 }, 30); return false; }; };

需要注意的關鍵點,簡要說幾個:

1、var position數組,點的集合:這個點,是以div的左上角的移動點,也就是說我們記錄的移動軌跡實際上就是div左上角的點的集合,offsetLeft為x坐標,offsetTop為y坐標,這個坐標軸你知道怎么畫不;

2、程序中出現的幾個長度或距離:offsetLeft、clientX、offsetWidth、style.left和document.documentElement.clientWidth等等;

3、push()方法:向數組末尾添加元素,改變數組長度,末尾哦;

4、pop()方法:刪除并返回數組的最后一個元素,關鍵點有兩個,其一:返回最后一個元素;其二:刪除元素,數組長度變??;

這樣我們實現了倒著回放,實現原理就不用多說了吧,如果要是正著回放,我們是不是就要獲取并刪除數組的第一個值了,哈,試著動手寫寫看吧。

不得不說還是用鼠標拖起來舒服,鍵盤移動太不方便了,用鼠標可以肆無忌憚的拖拽啊.....天已入伏,要熱,今天倒還好....

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美日韩一区二区三区在线免费观看| 国产精品入口日韩视频大尺度| 91视频8mav| 日韩在线激情视频| 久精品免费视频| 亚洲区免费影片| 日本韩国欧美精品大片卡二| 欧美理论片在线观看| 亚洲精品国产福利| 国产日韩在线看片| 日韩在线中文字| 永久免费毛片在线播放不卡| 国产99久久精品一区二区| 国产91ⅴ在线精品免费观看| 久久久久久中文字幕| xxxxx91麻豆| 国产亚洲欧美一区| 国产精品爽黄69| 成人女保姆的销魂服务| 国产精品嫩草视频| 久久久精品影院| 2020久久国产精品| 亚洲美女www午夜| 国产精品男女猛烈高潮激情| 国产精品久久久久免费a∨大胸| 欧美日韩国产色视频| 欧美激情按摩在线| 高清欧美一区二区三区| 亚洲欧美中文字幕在线一区| 欧美亚洲国产日韩2020| 日韩av免费一区| 国产91精品最新在线播放| 欧美黄色片视频| 久久精品夜夜夜夜夜久久| 欧美日韩在线视频一区二区| 日韩av在线高清| 在线观看视频亚洲| 日韩精品免费综合视频在线播放| 亚洲天堂日韩电影| 亚洲一区二区三区xxx视频| 亚洲精品欧美日韩专区| 亚洲图片欧美日产| 亚洲人成网站999久久久综合| 精品视频在线观看日韩| 国产精品久久久久久中文字| 国产日韩欧美中文在线播放| 国内精品国产三级国产在线专| 午夜精品蜜臀一区二区三区免费| 日韩a**中文字幕| 日韩在线观看精品| 欧美精品电影免费在线观看| 亚洲精品国产精品久久清纯直播| 成人伊人精品色xxxx视频| 久久亚洲成人精品| 亚洲欧美综合另类中字| 亚洲天堂男人天堂| 欧美在线免费视频| 欧美激情videoshd| 浅井舞香一区二区| 色99之美女主播在线视频| 国产精品视频内| 亚洲精品国产精品久久清纯直播| 国产午夜精品视频免费不卡69堂| 日韩欧美a级成人黄色| 97视频在线观看播放| 成人观看高清在线观看免费| 欧美激情在线一区| 国产精品九九久久久久久久| 欧美日韩国产限制| 国产一区二区三区精品久久久| 亚洲无限av看| 久久中文精品视频| 日韩欧美在线观看视频| 久久精品视频一| 久久精品一本久久99精品| 欧美日韩免费在线| 自拍偷拍亚洲欧美| 欧美日韩电影在线观看| 欧美洲成人男女午夜视频| 97在线看免费观看视频在线观看| 亚洲男人天堂手机在线| 成人性生交大片免费观看嘿嘿视频| 久久久久久免费精品| 欧美性69xxxx肥| 国产精品免费一区| 久久久久久成人精品| 久久精品国产亚洲精品2020| wwwwwwww亚洲| 国产99久久精品一区二区永久免费| 久久久久在线观看| 国产盗摄xxxx视频xxx69| 亚洲电影av在线| 日韩电影中文字幕在线观看| 欧美国产精品va在线观看| 国产成人高潮免费观看精品| 91精品国产一区| 日本成人在线视频网址| 国产在线观看精品一区二区三区| 久久亚洲精品毛片| 91精品啪在线观看麻豆免费| 亚洲小视频在线| 欧美日韩不卡合集视频| 欧美在线视频免费| 国产999精品视频| 亚洲精品ady| 亚洲精品丝袜日韩| 久久这里有精品视频| 国产精品福利网站| 久久免费高清视频| 国产日韩在线一区| 亚洲肉体裸体xxxx137| 亚洲已满18点击进入在线看片| 4k岛国日韩精品**专区| 韩剧1988免费观看全集| 91社影院在线观看| 97视频在线播放| 国产精品久久久久不卡| 欧美激情一区二区三区久久久| 精品中文字幕乱| 久久精品在线播放| 欧美国产日本在线| 久久久www成人免费精品| 亚洲国产小视频| 欧美精品福利在线| 欧美成在线视频| 精品夜色国产国偷在线| 日韩精品有码在线观看| 欧美猛交ⅹxxx乱大交视频| 亚洲女人天堂成人av在线| 亚洲成人黄色网址| 亚洲三级免费看| 亚洲欧美另类在线观看| 国产成人中文字幕| 九九热视频这里只有精品| 欧美中文字幕在线视频| 日韩免费观看高清| 精品福利在线观看| 欧美成aaa人片免费看| 国产精品电影久久久久电影网| 亚洲字幕在线观看| 色综合老司机第九色激情| 国产a∨精品一区二区三区不卡| 国产在线观看一区二区三区| 亚洲aⅴ日韩av电影在线观看| 日韩高清电影好看的电视剧电影| 亚洲黄色免费三级| 2019中文字幕在线观看| 久久天天躁狠狠躁夜夜躁2014| 国产精品专区一| 久久精品这里热有精品| 亚洲成av人片在线观看香蕉| 欧美亚洲国产视频| 久久99国产精品久久久久久久久| 国产精品视频99| 神马久久久久久| 欧美激情视频一区| 欧美成人午夜免费视在线看片| 欧美日韩一区二区免费视频| 日韩国产激情在线| 国产日韩欧美日韩大片| 亚洲аv电影天堂网| 中文字幕日韩在线观看| 亚洲成人黄色在线| 亚洲精品综合精品自拍|