js实现鼠标拖曳效果

 更新时间:2020年12月30日 11:18:40   作者:等待的L先生  
这篇文章主要为大家详细介绍了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>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • JS实现可切换图片的幻灯切换效果示例

    JS实现可切换图片的幻灯切换效果示例

    这篇文章主要介绍了JS实现可切换图片的幻灯切换效果,涉及javascript事件响应及页面元素属性动态操作相关实现技巧,需要的朋友可以参考下
    2019-05-05
  • js实现动态添加上传文件页面

    js实现动态添加上传文件页面

    这篇文章主要为大家详细介绍了js实现动态添加上传文件页面,如何动态创建一个input标签示例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-10-10
  • 一秒学会微信小程序制作table表格

    一秒学会微信小程序制作table表格

    这篇文章主要教大家一秒学会微信小程序制作table表格,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-02-02
  • Javascript中this绑定的3种方法与比较

    Javascript中this绑定的3种方法与比较

    大家都知道JS是一门动态语言,与传统的c和c++最大的区别就是js是在运行时动态检测值的类型和变化。this是js中的一个关键字,它代表当前作用域的上下文环境,而且随着上下文的改变而动态变化。这篇文章我们将详细介绍Javascript中绑定this的三种方法与简单的比较。
    2016-10-10
  • JavaScript中的二进制数据处理方法详解

    JavaScript中的二进制数据处理方法详解

    Blob、ArrayBuffer和Buffer是JavaScript中用于表示和操作二进制数据的三种主要方式,本文将深入探讨这些概念,以及它们如何在JavaScript中使用,需要的可以参考一下
    2023-06-06
  • JS暴虐查找法简洁版

    JS暴虐查找法简洁版

    有过相关经验的朋友都知道,Jscript的效率毕竟有限,在数组中查找数据时如果用常规的算法来做执行起来会很慢。
    2008-07-07
  • javascript相等运算符与等同运算符详细介绍

    javascript相等运算符与等同运算符详细介绍

    不管是java、c++、php都有相等运算符与等同运算符,当然javasript也不例外,下面介绍一下
    2013-11-11
  • js实现拖动模态框

    js实现拖动模态框

    这篇文章主要为大家详细介绍了js实现拖动模态框,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-07-07
  • JavaScript解构赋值的实用技巧指南

    JavaScript解构赋值的实用技巧指南

    JavaScript解构赋值为我们提供了很多方便,但是用法比较多,本文就来梳理一下,下面这篇文章主要给大家介绍了关于JavaScript解构赋值的实用技巧指南,需要的朋友可以参考下
    2022-01-01
  • ES6之Proxy的get方法详解

    ES6之Proxy的get方法详解

    这篇文章主要介绍了ES6之Proxy的get方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-10-10

最新评论