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 相关文章推荐
JS的IE和Firefox兼容性集锦
Dec 11 Javascript
客户端脚本中常常出现的一些问题和调试技巧
Jan 09 Javascript
中国地区三级联动下拉菜单效果分析
Nov 15 Javascript
Javascript合并表格中具有相同内容单元格示例
Aug 11 Javascript
jquery获取radio值实例
Oct 16 Javascript
node.js中的fs.readdir方法使用说明
Dec 17 Javascript
用JavaScript显示浏览器客户端信息的超相近教程
Jun 18 Javascript
jQuery的图片轮播插件PgwSlideshow使用详解
Aug 11 Javascript
Angular搜索场景中使用rxjs的操作符处理思路
May 30 Javascript
Vue 全家桶实现移动端酷狗音乐功能
Nov 16 Javascript
函数式编程入门实践(一)
Apr 20 Javascript
vue2配置scss的方法步骤
Jun 06 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
php字符串截取的简单方法
2013/07/04 PHP
Yii2中事务的使用实例代码详解
2016/09/07 PHP
PHP实现递归目录的5种方法
2016/10/27 PHP
利用php + Laravel如何实现部署自动化详解
2017/10/11 PHP
用js实现的检测浏览器和系统的函数
2009/04/09 Javascript
js本身的局限性 别让javascript做太多事
2010/03/23 Javascript
关于jQuery新的事件绑定机制on()的使用技巧
2013/04/26 Javascript
javascript打印html内容功能的方法示例
2013/11/28 Javascript
当jQuery1.7遇上focus方法的问题
2014/01/26 Javascript
jQuery Validate 验证,校验规则写在控件中的具体实例
2014/02/27 Javascript
js实现鼠标触发图片抖动效果的方法
2015/02/27 Javascript
javascript中使用new与不使用实例化对象的区别
2015/06/22 Javascript
Angularjs 自定义服务的三种方式(推荐)
2016/08/02 Javascript
vue中引入第三方字体文件的方法示例
2018/12/17 Javascript
在vue中根据光标的显示与消失实现下拉列表
2019/09/29 Javascript
jQuery中event.target和this的区别详解
2020/08/13 jQuery
[01:15:00]LGD vs Mineski Supermajor 胜者组 BO3 第一场 6.5
2018/06/06 DOTA
python使用pyqt写带界面工具的示例代码
2017/10/23 Python
pandas 数据实现行间计算的方法
2018/06/08 Python
python K近邻算法的kd树实现
2018/09/06 Python
Python实现分段线性插值
2018/12/17 Python
使用python实现哈希表、字典、集合操作
2019/12/22 Python
python生成大写32位uuid代码
2020/03/03 Python
python调用API接口实现登陆短信验证
2020/05/10 Python
详解CSS3的图层阴影和文字阴影效果使用
2016/06/09 HTML / CSS
客服专员岗位职责范本
2013/11/29 职场文书
退休感言
2014/01/28 职场文书
十佳大学生事迹材料
2014/01/29 职场文书
离婚协议书该怎么写
2014/10/04 职场文书
2015年乡镇扶贫工作总结
2015/04/08 职场文书
2015年小学体育工作总结
2015/05/22 职场文书
2016年第104个国际护士节活动总结
2016/04/06 职场文书
创业计划书之家政服务
2019/09/18 职场文书
为什么你写的height:100%不起作用
2021/05/10 HTML / CSS
Java基础-封装和继承
2021/07/02 Java/Android
vue css 相对路径导入问题级踩坑记录
2022/06/05 Vue.js