js实现鼠标拖曳效果


Posted in Javascript onDecember 30, 2020

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>

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

Javascript 相关文章推荐
Javascript学习笔记4 Eval函数
Jan 11 Javascript
javascript学习笔记(五)正则表达式
Apr 08 Javascript
表单切换,用回车键替换Tab健(不支持IE)
Jul 20 Javascript
jQuery-serialize()输出序列化form表单值的方法
Dec 26 Javascript
JS实现在网页中弹出一个输入框的方法
Mar 03 Javascript
jQuery实现的简洁下拉菜单导航效果代码
Aug 26 Javascript
AngularJS中的DOM操作用法分析
Nov 04 Javascript
详解vue嵌套路由-query传递参数
May 23 Javascript
JavaScript内存泄漏的处理方式
Nov 20 Javascript
基于vue.js无缝滚动效果
Jan 25 Javascript
深入理解使用Vue实现Context-Menu的思考与总结
Mar 09 Javascript
用Golang运行JavaScript的实现示例
Nov 25 Javascript
微信小程序实现简单购物车功能
Dec 30 #Javascript
微信小程序实现购物车小功能
Dec 30 #Javascript
Vue实现简易购物车页面
Dec 30 #Vue.js
利用Vue实现简易播放器的完整代码
Dec 30 #Vue.js
vue+element UI实现树形表格
Dec 29 #Vue.js
vue实现树状表格效果
Dec 29 #Vue.js
vue实现图书管理系统
Dec 29 #Vue.js
You might like
PHP中exec与system用法区别分析
2014/09/22 PHP
实例分析PHP将字符串转换成数字的方法
2019/01/27 PHP
Prototype使用指南之form.js
2007/01/10 Javascript
漂亮的提示信息(带箭头)
2007/03/21 Javascript
COM中获取JavaScript数组大小的代码
2009/11/22 Javascript
jquery实现手风琴效果实例代码
2013/11/15 Javascript
jquery easyui使用心得
2014/07/07 Javascript
分享有关jQuery中animate、slide、fade等动画的连续触发、滞后反复执行的bug
2016/01/10 Javascript
仿Angular Bootstrap TimePicker创建分钟数-秒数的输入控件
2016/07/01 Javascript
JS获取IE版本号与HTML设置IE文档模式的方法
2016/10/09 Javascript
微信小程序 列表的上拉加载和下拉刷新的实现
2017/04/01 Javascript
Angular2学习教程之TemplateRef和ViewContainerRef详解
2017/05/25 Javascript
解决React Native端口号修改的方法
2017/07/28 Javascript
基于vue2实现左滑删除功能
2017/11/28 Javascript
Vue官网todoMVC示例代码
2018/01/29 Javascript
p5.js入门教程之图片加载
2018/03/20 Javascript
vue实现文字加密功能
2019/09/27 Javascript
[38:21]2018DOTA2亚洲邀请赛3月30日 小组赛A组 LGD VS Newbee
2018/03/31 DOTA
Python元组操作实例分析【创建、赋值、更新、删除等】
2017/07/24 Python
python中计算一个列表中连续相同的元素个数方法
2018/06/29 Python
python使用正则筛选信用卡
2019/01/27 Python
python用类实现文章敏感词的过滤方法示例
2019/10/27 Python
python飞机大战pygame游戏背景设计详解
2019/12/17 Python
Tensorflow 实现释放内存
2020/02/03 Python
Windows下Anaconda安装、换源与更新的方法
2020/04/17 Python
PyCharm 2020.1版安装破解注册码永久激活(激活到2089年)
2020/09/24 Python
廉价航班、机票和酒店:JustFly
2018/02/07 全球购物
爱心倡议书范文
2014/05/12 职场文书
白莲教口号
2014/06/18 职场文书
运动会通讯稿50字
2015/07/20 职场文书
2015年行政管理人员工作总结
2015/10/15 职场文书
pytorch查看网络参数显存占用量等操作
2021/05/12 Python
mybatis 获取无数据的字段不显示的问题
2021/07/15 Java/Android
Nginx使用Lua模块实现WAF的原理解析
2021/09/04 Servers
SQL Server2019安装的详细步骤实战记录(亲测可用)
2022/06/10 SQL Server
基于Android10渲染Surface的创建过程
2022/08/14 Java/Android