js实现div色块拖动录制
程序员文章站
2022-06-22 14:10:52
本文实例为大家分享了js实现div色块拖动录制的具体代码,供大家参考,具体内容如下
描述:
实现一个div50*50的色块,拖动它生成一个轨迹,松手后,这个div会重复你刚才拖动的...
本文实例为大家分享了js实现div色块拖动录制的具体代码,供大家参考,具体内容如下
描述:
实现一个div50*50的色块,拖动它生成一个轨迹,松手后,这个div会重复你刚才拖动的这个路径。
效果:
代码:
<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <title>title</title> <style> div { width: 50px; height: 50px; background-color: deepskyblue; position: absolute; border: 2px solid #656565; } </style> <script src="js/method.js"></script> </head> <body> <div></div> <script> var elem; var state=0;//当前的状态 初始0——拖动录制1——回放2 var arr=[];//存放我们的行走路径的 数组 var list=[];//存放我们的行走路径的 数组 var index=0; init(); function init() { elem=document.queryselector("div"); method.dragelem(elem); elem.addeventlistener("mousedown",mousehandler); elem.addeventlistener("mouseup",mousehandler); setinterval(animation,16); } function mousehandler(e) {//当前的状态 初始0——拖动录制1——回放2 if(e.type==="mousedown"){//鼠标按下 state=1; }else if(e.type==="mouseup"){//鼠标抬起 createelemshadow(); state=2; } } function createelemshadow() { var bool=false; if(list.length===0) bool=true; for(var i=0;i<5;i++){ if(bool)list.push(elem.clonenode(false)); list[i].style.opacity=1-i*0.2; document.body.appendchild(list[i]) } } function animation() { if(!state) return; if(state===1){ record(); }else if(state===2){ play(); } } function record() { var rect=elem.getboundingclientrect(); arr.push({x:rect.x,y:rect.y}); } function play() { /* if(index>=arr.length-1){ state=0; return; }*/ index++; var point=arr[index]; if(point){ elem.style.left=point.x+"px"; elem.style.top=point.y+"px"; elem.style.backgroundcolor=method.divcolor(); } var bool=false; for(var i=0;i<list.length;i++){ if(!arr[index-i*2]) continue; list[i].style.left=arr[index-i*2].x+"px"; list[i].style.top=arr[index-i*2].y+"px"; list[i].style.backgroundcolor=method.divcolor(); bool=true; } if(!bool){ state=0; for(var j=0;j<list.length;j++){ list[j].remove(); } } } </script> </body> </html>
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
上一篇: 原生js实现轮播图(两种方法)
下一篇: 不容错过的Java高级面试题