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 相关文章推荐
[原创]网络复制内容时常用的正则+editplus
Nov 30 Javascript
对 jQuery 中 data 方法的误解分析
Jun 18 Javascript
JavaScript 学习笔记之变量及其作用域
Jan 14 Javascript
AngularJS仿苹果滑屏删除控件
Jan 18 Javascript
jQuery实现的图片轮播效果完整示例
Sep 12 Javascript
利用js判断手机是否安装某个app的多种方案
Feb 13 Javascript
基于Bootstrap漂亮简洁的CSS3价格表(附源码下载)
Feb 28 Javascript
bootstrap是什么_动力节点Java学院整理
Jul 14 Javascript
phantomjs导出html到pdf的方法总结
Oct 19 Javascript
JS实现计算小于非负数n的素数的数量算法示例
Feb 26 Javascript
微信小程序实现树莓派(raspberry pi)小车控制
Feb 12 Javascript
解决vue数据不实时更新的问题(数据更改了,但数据不实时更新)
Oct 27 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提取数据库内容中的图片地址并循环输出
2010/03/21 PHP
php源码加密 仿微盾PHP加密专家(PHPCodeLock)
2010/05/06 PHP
php实现爬取和分析知乎用户数据
2016/01/26 PHP
JavaScript 应用技巧集合[推荐]
2009/08/30 Javascript
javascript 命名规则 变量命名规则
2010/02/25 Javascript
javascript 原型继承介绍
2011/08/30 Javascript
jquery更换文章内容与改变字体大小代码
2013/09/30 Javascript
Javascript设置对象的ReadOnly属性(示例代码)
2013/12/25 Javascript
学习JavaScript设计模式(继承)
2015/11/26 Javascript
微信小程序 http请求的session管理
2017/06/07 Javascript
jQuery动画_动力节点节点Java学院整理
2017/07/04 jQuery
简述JS浏览器的三种弹窗
2018/07/15 Javascript
jQuery插件实现非常实用的tab栏切换功能【案例】
2019/02/18 jQuery
初学node.js中实现删除用户路由
2019/05/27 Javascript
如何实现双向绑定mvvm的原理实现
2019/05/28 Javascript
javascript实现函数柯里化与反柯里化过程解析
2019/10/08 Javascript
[04:02]2014DOTA2国际邀请赛 BBC每日综述中国战队将再度登顶
2014/07/21 DOTA
[01:01:18]DOTA2上海特级锦标赛主赛事日 - 2 败者组第二轮#2COL VS LGD
2016/03/03 DOTA
在Django的视图(View)外使用Session的方法
2015/07/23 Python
网站渗透常用Python小脚本查询同ip网站
2017/05/08 Python
Django实现一对多表模型的跨表查询方法
2018/12/18 Python
对python中if语句的真假判断实例详解
2019/02/18 Python
python mac下安装虚拟环境的图文教程
2019/04/12 Python
int在python中的含义以及用法
2019/06/27 Python
Django集成celery发送异步邮件实例
2019/12/17 Python
Python3标准库glob文件名模式匹配的问题
2020/03/13 Python
python网络编程之五子棋游戏
2020/05/14 Python
python入门:argparse浅析 nargs='+'作用
2020/07/12 Python
Python 串口通信的实现
2020/09/29 Python
捷克家具销售网站:SCONTO Nábytek
2020/01/02 全球购物
2014年学校工作总结
2014/11/20 职场文书
2015年感恩节活动总结
2015/03/24 职场文书
工厂仓管员岗位职责
2015/04/01 职场文书
Python基础详解之邮件处理
2021/04/28 Python
分析SQL窗口函数之聚合窗口函数
2022/04/21 Oracle
Linux在两个服务器直接传文件的操作方法
2022/08/05 Servers