js实现div色块拖动录制


Posted in Javascript onJanuary 16, 2020

本文实例为大家分享了js实现div色块拖动录制的具体代码,供大家参考,具体内容如下

描述:

实现一个div50*50的色块,拖动它生成一个轨迹,松手后,这个div会重复你刚才拖动的这个路径。

效果:

js实现div色块拖动录制

js实现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>

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

Javascript 相关文章推荐
juqery 学习之三 选择器 可见性 元素属性
Nov 25 Javascript
JS高级拖动技术 setCapture,releaseCapture
Jul 31 Javascript
父节点获取子节点的字符串示例代码
Feb 26 Javascript
jQuery学习笔记之jQuery原型属性和方法
Jun 09 Javascript
让JavaScript中setTimeout支持链式操作的方法
Jun 19 Javascript
jQuery实现hover合成事件的方法
Aug 06 Javascript
JS+CSS实现的经典圆角下拉菜单效果代码
Oct 21 Javascript
解决在Bootstrap模糊框中使用WebUploader的问题
Mar 22 Javascript
javascript实现计算指定范围内的质数示例
Dec 29 Javascript
vue h5移动端禁止缩放代码
Oct 28 Javascript
jQuery实现简单轮播图效果
Dec 27 jQuery
vue项目多环境配置(.env)的实现
Jul 21 Vue.js
微信小程序实现二维码签到考勤系统
Jan 16 #Javascript
解决vue+ element ui 表单验证有值但验证失败问题
Jan 16 #Javascript
JavaScript实现简单的计算器
Jan 16 #Javascript
js面向对象之实现淘宝放大镜
Jan 15 #Javascript
js实现简单的打印表格
Jan 15 #Javascript
js实现图片实时时钟
Jan 15 #Javascript
js实现中文实时时钟
Jan 15 #Javascript
You might like
建立动态的WML站点(二)
2006/10/09 PHP
在VS2008中编译MYSQL5.1.48的方法
2010/07/03 PHP
使用PHP访问RabbitMQ消息队列的方法示例
2018/06/06 PHP
比较全的JS checkbox全选、取消全选、删除功能代码
2008/12/19 Javascript
利用jQuery的$.event.fix函数统一浏览器event事件处理
2009/12/21 Javascript
40个有创意的jQuery图片、内容滑动及弹出插件收藏集之一
2011/12/31 Javascript
jquery控制显示服务器生成的图片流
2015/08/04 Javascript
AngularJS基础 ng-options 指令详解
2016/08/02 Javascript
js 上传文件预览的简单实例
2016/08/16 Javascript
jQuery实现获取隐藏div高度的方法示例
2017/02/09 Javascript
js获取地址栏参数的两种方法
2017/06/27 Javascript
详解使用mpvue开发github小程序总结
2018/07/25 Javascript
基于Vue el-autocomplete 实现类似百度搜索框功能
2019/10/25 Javascript
浅谈vue 组件中的setInterval方法和window的不同
2020/07/30 Javascript
VSCode Vue开发推荐插件和VSCode快捷键(小结)
2020/08/08 Javascript
vue-cli4使用全局less文件中的变量配置操作
2020/10/21 Javascript
详解JavaScript之Array.reduce源码解读
2020/11/01 Javascript
[53:10]Secret vs Pain 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
python数组复制拷贝的实现方法
2015/06/09 Python
python函数中return后的语句一定不会执行吗?
2017/07/06 Python
用python给自己做一款小说阅读器过程详解
2019/07/11 Python
python 5个顶级异步框架推荐
2020/09/09 Python
HTML5中判断用户是否正在浏览页面的方法
2014/05/03 HTML / CSS
Ellesse英国官网:意大利高级运动品牌
2019/07/23 全球购物
新电JAVA笔试题目
2014/08/31 面试题
自我鉴定书
2014/03/24 职场文书
2014年大学生党课心得体会范文
2014/03/29 职场文书
气象学专业个人求职信
2014/04/22 职场文书
2014年巴西世界杯口号
2014/06/05 职场文书
物理教育专业求职信
2014/06/25 职场文书
会计试用期自我评价怎么写
2014/09/18 职场文书
机关中层领导干部群众路线教育实践活动个人对照检查材料
2014/09/24 职场文书
小学教育见习报告
2014/10/31 职场文书
防暑降温通知书
2015/04/27 职场文书
MySQL之select、distinct、limit的使用
2021/11/11 MySQL
Win10此设备不支持接收Miracast无法投影的解决方法
2022/07/07 数码科技