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 混合的构造函数和原型方式,动态原型方式
Dec 07 Javascript
addEventListener 的用法示例介绍
May 07 Javascript
jQuery实现Meizu魅族官方网站的导航菜单效果
Sep 14 Javascript
JavaScript实现弹出DIV层同时页面背景渐变成半透明效果
Mar 25 Javascript
使用vue.js制作分页组件
Jun 27 Javascript
微信小程序实现图片轮播及文件上传
Apr 07 Javascript
vue 2.0项目中如何引入element-ui详解
Sep 06 Javascript
详解Vue单元测试Karma+Mocha学习笔记
Jan 31 Javascript
在vue项目中,使用axios跨域处理
Mar 07 Javascript
React降级配置及Ant Design配置详解
Dec 27 Javascript
javascriptvoid(0)含义以及与&quot;#&quot;的区别讲解
Jan 19 Javascript
JS typeof fn === 'function' &amp;&amp; fn()详解
Aug 22 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中stdClass的用法分析
2015/02/27 PHP
php实现HTML实体编号与非ASCII字符串相互转换类实例
2016/11/02 PHP
php中static 静态变量和普通变量的区别
2016/12/01 PHP
php实现数组中出现次数超过一半的数字的统计方法
2018/10/14 PHP
《JavaScript高级程序设计》阅读笔记(一) ECMAScript基础
2012/02/27 Javascript
js验证整数加保留小数点的简单实例
2013/12/02 Javascript
js 获取页面高度和宽度兼容 ie firefox chrome等
2014/05/14 Javascript
jQuery ui 利用 datepicker插件实现开始日期(minDate)和结束日期(maxDate)
2014/05/22 Javascript
javascript中setTimeout使用指南
2015/07/26 Javascript
Highcharts使用简例及异步动态读取数据
2015/12/30 Javascript
jQuery遍历DOM元素与节点方法详解
2016/04/14 Javascript
JS触摸屏网页版仿app弹窗型滚动列表选择器/日期选择器
2016/10/30 Javascript
Nodejs 发送Post请求功能(发短信验证码例子)
2017/02/09 NodeJs
Bootstrap栅格系统使用方法及页面调整变形的解决方法
2017/03/10 Javascript
原生js二级联动效果
2017/06/20 Javascript
Vue2.0+ElementUI实现表格翻页的实例
2017/10/23 Javascript
JS+canvas画一个圆锥实例代码
2017/12/13 Javascript
JavaScript之解构赋值的理解
2019/01/30 Javascript
jquery实现自定义树形表格的方法【自定义树形结构table】
2019/07/12 jQuery
Vue 事件的$event参数=事件的值案例
2021/01/29 Vue.js
跟老齐学Python之集合的关系
2014/09/24 Python
python pandas修改列属性的方法详解
2018/06/09 Python
Python发送邮件测试报告操作实例详解
2018/12/08 Python
用python介绍4种常用的单链表翻转的方法小结
2020/02/24 Python
Numpy中的数组搜索中np.where方法详细介绍
2021/01/08 Python
CSS3弹性盒模型开发笔记(一)
2016/04/26 HTML / CSS
moosejaw旗下的户外商品促销网站:Mountain Steals
2017/02/27 全球购物
学生会竞选自荐信
2013/10/12 职场文书
公司请假条范文
2014/04/11 职场文书
2014年安全生产大检查方案
2014/05/13 职场文书
协会周年庆活动方案
2014/08/26 职场文书
医院科室评语
2015/01/04 职场文书
社区植树节活动总结
2015/02/06 职场文书
企业管理不到位检讨书
2019/06/27 职场文书
2019年朋友圈经典励志语录50条
2019/07/05 职场文书
python批量创建变量并赋值操作
2021/06/03 Python