如何用JS实现鼠标拖曳且能还原拖动轨迹的效果
Admin 2022-06-14 群英技术资讯 1222 次浏览
关于“如何用JS实现鼠标拖曳且能还原拖动轨迹的效果”的知识有一些人不是很理解,对此小编给大家总结了相关内容,具有一定的参考借鉴价值,而且易于学习与理解,希望能对大家有所帮助,有这个方面学习需要的朋友就继续往下看吧。js实现鼠标的拖曳效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
效果如下:

下面是代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>鼠标拖曳效果</title>
<style>
body{
background:black;
}
#box{
position:absolute;
background: rgb(148, 143, 143);
width: 400px;
height: 200px;
box-sizing: border-box;
border: white 2px solid;
}
.topTitle{
cursor: move;
border-bottom: white 2px solid;
background: #cccccc;
text-align: right;
color: white;
height: 20px;
line-height: 20px;
}
.content >div{
background: rgb(148, 143, 143);
height: 50px;
line-height: 50px;
color: white;
text-align: left;
}
</style>
</head>
<body>
<div id="box">
<div class="topTitle"><a href="#" >点击回放拖动轨迹</a></div>
<div class="content">
<div>Drag:</div>
<div>offsetTop:</div>
<div>offsetLeft</div>
</div>
</div>
</body>
<script>
var oBox=document.getElementById("box");
var oTopTitle=document.getElementsByClassName("topTitle")[0];
var aDiv= document.querySelectorAll(".content >div");
var offWidth=document.documentElement.clientWidth;
var clHight=document.documentElement.clientHeight;
var i,t;
var state="false";
var oText=document.querySelector(".topTitle a");
oTopTitle.onmousedown=function(even){
var OffsetE=even||window.event;
var flag=true;
//设立边界:
document.onmousemove=function(even){
state="true";
var ClientE=even||window.event;
l=ClientE.clientX-OffsetE.offsetX;
t=ClientE.clientY-OffsetE.offsetY;
recorde(l,t,flag);
if(l<0){
l=0;
}
if(t<0){
t=0;
}
if(l>offWidth-oBox.offsetWidth){
l=offWidth-oBox.offsetWidth;
}
if(t>clHight-oBox.offsetHeight){
t=clHight-oBox.offsetHeight;
}
oBox.style.left=l+"px";
oBox.style.top=t+"px";
}
document.onmouseup=function(){
console.log(1);
state="false";
document.onmousemove=null;
document.onmouseup=null;
}
OffsetE.preventDefault();
flag=false;
}
oText.onclick=function(){
var reback=recorde(l,t);
var index=reback.strX.length;
setInterval(function(){
if(index<0){
clearInterval();
return;
}
oBox.style.left=reback.strX[index--]
+"px";
oBox.style.top=reback.strY[index--]+"px";
},30);
strX=[];
strY=[];
}
var strX=[];
var strY=[];
function recorde(offsetTop,offsetLeft,flag){
var text1=aDiv[1].innerText;
aDiv[0].innerHTML="Drag:"+"<span style='color:yellow'>"+state+"</span>";
aDiv[1].innerHTML="offsetTop:"+"<span style='color:yellow'>"+offsetTop+"</span>";
aDiv[2].innerHTML="offsetLeft:"+"<span style='color:yellow'>"+offsetLeft+"</span>";
strX.push(offsetTop) ;
strY.push(offsetLeft);
// console.log(strX);
// console.log(strY);
return {
strX,
strY
}
}
</script>
</html>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
第一步用自带的包管理先删除一次yumremovenodejsnpm-y手动删除残留进入/usr/local/lib删除所有node和node_modules文件夹进入/usr/local/include删除所有node和node_modules文件夹进入/usr/local/bin删除node的可执行文件 安装nodejs官网最新的xz
这篇文章主要介绍了JavaScript Dom对象的操作,文张以浏览器网页就是一个Dom树形结构做为核心,然后根据核心进行更新Dom节点、获得Dom节点、删除一个Dom节点、添加一个新的节点操作,下面文章是详细内容,需要的朋友可以参考以下
在实际的React项目中,我们会遇到引入scss的需求,那么react中怎么引入scss呢?其实并不难,本文给大家分享一下react引入scss的方法,需要的朋友可以参考。
改变方法:1、使用“document.getElementsByTagName("body")”语句获取到body元素节点;2、使用“body元素节点.style.backgroundColor="颜色值";”语句来改变网页的背景颜色。
判断语句这个我们不陌生,就是判断是否满足指定的条件,如果满足则执行一定的代码,否则跳过,下面这篇文章主要给大家介绍了关于JavaScript中判断的优雅写法,需要的朋友可以参考下
成为群英会员,开启智能安全云计算之旅
立即注册关注或联系群英网络
7x24小时售前:400-678-4567
7x24小时售后:0668-2555666
24小时QQ客服
群英微信公众号
CNNIC域名投诉举报处理平台
服务电话:010-58813000
服务邮箱:service@cnnic.cn
投诉与建议:0668-2555555
Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 ICP核准(ICP备案)粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008