如何用JavaScript实现网页上色块的长尾词拖动功能?
- 内容介绍
- 文章标签
- 相关推荐
本文共计781个文字,预计阅读时间需要4分钟。
原文示例:javascript// 本文字例为大家分享了一个js实现div色块拖拽控制的具体代码,供大家参考。具体内容如下:// 实现一个div,尺寸为50*50,当拖动它时,生成一个轨迹,放手后,这个div会重复刚才拖动的路径。
// 代码示例let div=document.createElement('div');div.style.width='50px';div.style.height='50px';div.style.position='absolute';div.style.left='0';div.style.top='0';div.style.background='red';
let positions=[];
div.addEventListener('mousedown', function(e) { let startX=e.clientX; let startY=e.clientY; positions=[];
document.addEventListener('mousemove', function(e) { let endX=e.clientX; let endY=e.clientY; let dx=endX - startX; let dy=endY - startY;
div.style.left=(parseInt(div.style.left) + dx) + 'px'; div.style.top=(parseInt(div.style.top) + dy) + 'px';
positions.push({x: parseInt(div.style.left), y: parseInt(div.style.top)}); });
document.addEventListener('mouseup', function() { document.removeEventListener('mousemove', arguments.callee); div.style.left=(parseInt(div.style.left) - startX) + 'px'; div.style.top=(parseInt(div.style.top) - startY) + 'px';
for (let pos of positions) { let traceDiv=document.createElement('div'); traceDiv.style.width='2px'; traceDiv.style.height='2px'; traceDiv.style.position='absolute'; traceDiv.style.left=pos.x + 'px'; traceDiv.style.top=pos.y + 'px'; traceDiv.style.background='blue'; document.body.appendChild(traceDiv); } });});document.body.appendChild(div);
改写内容:javascript// 分享一个用js实现div色块拖拽的代码示例,适合参考。主要实现了一个50*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>
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持易盾网络。
本文共计781个文字,预计阅读时间需要4分钟。
原文示例:javascript// 本文字例为大家分享了一个js实现div色块拖拽控制的具体代码,供大家参考。具体内容如下:// 实现一个div,尺寸为50*50,当拖动它时,生成一个轨迹,放手后,这个div会重复刚才拖动的路径。
// 代码示例let div=document.createElement('div');div.style.width='50px';div.style.height='50px';div.style.position='absolute';div.style.left='0';div.style.top='0';div.style.background='red';
let positions=[];
div.addEventListener('mousedown', function(e) { let startX=e.clientX; let startY=e.clientY; positions=[];
document.addEventListener('mousemove', function(e) { let endX=e.clientX; let endY=e.clientY; let dx=endX - startX; let dy=endY - startY;
div.style.left=(parseInt(div.style.left) + dx) + 'px'; div.style.top=(parseInt(div.style.top) + dy) + 'px';
positions.push({x: parseInt(div.style.left), y: parseInt(div.style.top)}); });
document.addEventListener('mouseup', function() { document.removeEventListener('mousemove', arguments.callee); div.style.left=(parseInt(div.style.left) - startX) + 'px'; div.style.top=(parseInt(div.style.top) - startY) + 'px';
for (let pos of positions) { let traceDiv=document.createElement('div'); traceDiv.style.width='2px'; traceDiv.style.height='2px'; traceDiv.style.position='absolute'; traceDiv.style.left=pos.x + 'px'; traceDiv.style.top=pos.y + 'px'; traceDiv.style.background='blue'; document.body.appendChild(traceDiv); } });});document.body.appendChild(div);
改写内容:javascript// 分享一个用js实现div色块拖拽的代码示例,适合参考。主要实现了一个50*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>
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持易盾网络。

