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 相关文章推荐
javascript setinterval 的正确语法如何书写
Jun 17 Javascript
js调试工具Console命令详解
Oct 21 Javascript
XML文件转化成NSData对象的方法
Aug 12 Javascript
详解javascript传统方法实现异步校验
Jan 22 Javascript
JavaScript 经典实例日常收集整理(常用经典)
Mar 30 Javascript
微信小程序 icon组件详细及实例代码
Oct 25 Javascript
JavaScript的for循环中嵌套一个点击事件的问题解决
Mar 03 Javascript
jquery事件与绑定事件
Mar 16 Javascript
微信小程序获取手机系统信息的方法【附源码下载】
Dec 07 Javascript
JavaScript实现的反序列化json字符串操作示例
Jul 18 Javascript
Vue移动端实现图片上传及超过1M压缩上传
Dec 23 Javascript
Vue组件模板及组件互相引用代码实例
Mar 11 Javascript
微信小程序实现二维码签到考勤系统
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
BBS(php &amp; mysql)完整版(三)
2006/10/09 PHP
php 算法之实现相对路径的实例
2017/10/17 PHP
Jquery easyUI 更新行示例
2014/03/06 Javascript
JS 获取鼠标左右键的键值方法
2014/10/11 Javascript
基于jquery和svg实现超炫酷的动画特效
2014/12/09 Javascript
js实现遍历含有input的table实例
2015/12/07 Javascript
Vue开发过程中遇到的疑惑知识点总结
2017/01/20 Javascript
angular使用post、get向后台传参的问题实例
2017/05/27 Javascript
jQuery制作input提示内容(兼容IE8以上)
2017/07/05 jQuery
vue2 router 动态传参,多个参数的实例
2017/11/10 Javascript
Vue2.0用户权限控制解决方案
2017/11/29 Javascript
Vue组件之自定义事件的功能图解
2018/02/01 Javascript
node实现mock-plugin中间件的方法
2019/12/25 Javascript
解决微信小程序scroll-view组件无横向滚动的问题
2020/02/04 Javascript
jQuery实现聊天对话框
2020/02/08 jQuery
在nodejs中创建child process的方法
2021/01/26 NodeJs
[15:20]DOTA2亚洲邀请赛总决赛开幕式表演:羽泉献唱
2017/04/05 DOTA
[02:12]Dota 2 推出全新英雄—— 电炎绝手
2019/08/23 DOTA
python局部赋值的规则
2013/03/07 Python
用Python制作简单的钢琴程序的教程
2015/04/01 Python
纯python实现机器学习之kNN算法示例
2018/03/01 Python
python实现飞机大战微信小游戏
2020/03/21 Python
tensorflow dataset.shuffle、dataset.batch、dataset.repeat顺序区别详解
2020/06/03 Python
PyCharm Community安装与配置的详细教程
2020/11/24 Python
HTML5+CSS3实现无插件拖拽上传图片(支持预览与批量)
2017/01/05 HTML / CSS
如何用H5实现一个触屏版的轮播器的实例
2017/01/09 HTML / CSS
财务情况说明书范文
2014/05/06 职场文书
关于建议书的格式范文
2014/05/20 职场文书
小学数学课题方案
2014/06/15 职场文书
学生自我鉴定格式及范文
2014/09/16 职场文书
查摆问题自查报告范文
2014/10/13 职场文书
教师党员自我评价范文
2015/03/04 职场文书
2016春节慰问信范文
2015/03/25 职场文书
大学生社会服务心得体会
2016/01/22 职场文书
八年级历史教学反思
2016/02/19 职场文书
Redis集群的关闭与重启操作
2021/07/07 Redis