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修改css样式style
Apr 15 Javascript
基于jQuery的淡入淡出可自动切换的幻灯插件打包下载
Sep 15 Javascript
JS图片根据鼠标滚动延时加载的实例代码
Jul 13 Javascript
js 控制图片大小核心讲解
Oct 09 Javascript
jQuery的显示和隐藏方法与css隐藏的样式对比
Oct 18 Javascript
javascript实现超炫的向上滑行菜单实例
Aug 03 Javascript
不想让浏览器运行javascript脚本的方法
Nov 20 Javascript
两种js监听滚轮事件的实现方法
May 13 Javascript
详解VueJs异步动态加载块
Mar 09 Javascript
解决layui追加或者动态修改的表单元素“没效果”的问题
Sep 18 Javascript
jquery实现垂直手风琴菜单
Mar 04 jQuery
ES6的循环与可迭代对象示例详解
Jan 31 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中空字符串介绍0、null、empty和false之间的关系
2012/09/25 PHP
另一个javascript小测验(代码集合)
2011/07/27 Javascript
javascript中字符串的定义示例代码
2013/12/19 Javascript
JS替换文本域内的回车示例
2014/02/18 Javascript
简单易用的倒计时js代码
2014/08/04 Javascript
JavaScript操作class和style样式代码详解
2016/02/13 Javascript
mpvue中使用flyjs全局拦截的实现代码
2018/09/13 Javascript
浅谈Fetch 数据交互方式
2018/12/20 Javascript
Vue实现一个图片懒加载插件
2019/03/11 Javascript
小程序实现分类页
2019/07/12 Javascript
Vue + Element UI图片上传控件使用详解
2019/08/20 Javascript
JavaScript如何使用插值实现图像渐变
2020/06/28 Javascript
浅谈js中的attributes和Attribute的用法与区别
2020/07/16 Javascript
Python操作MongoDB数据库PyMongo库使用方法
2015/04/27 Python
Python3字符串学习教程
2015/08/20 Python
Python开发的HTTP库requests详解
2017/08/29 Python
Python+matplotlib实现计算两个信号的交叉谱密度实例
2018/01/08 Python
对python list 遍历删除的正确方法详解
2018/06/29 Python
python编写微信公众号首图思路详解
2019/12/13 Python
Python3+selenium实现cookie免密登录的示例代码
2020/03/18 Python
Python map及filter函数使用方法解析
2020/08/06 Python
python 两种方法删除空文件夹
2020/09/29 Python
CSS3实现各种图形的示例代码
2016/10/19 HTML / CSS
Missguided美国官网:英国时尚品牌
2018/01/18 全球购物
俄罗斯金苹果网上化妆品和香水商店:Goldapple
2019/12/01 全球购物
计算机专业应届生求职信
2014/04/06 职场文书
城市规划应届毕业生自荐信
2014/07/04 职场文书
校长创先争优承诺书
2014/08/30 职场文书
综合测评个人总结
2015/03/03 职场文书
药店收银员岗位职责
2015/04/07 职场文书
2015年幼儿园后勤工作总结
2015/04/25 职场文书
毕业生政审意见范文
2015/06/04 职场文书
毕业证明模板
2015/06/19 职场文书
数据分析数据库ClickHouse在大数据领域应用实践
2022/04/03 MySQL
用Python仅20行代码编写一个简单的端口扫描器
2022/04/08 Python
MongoDB支持的数据类型
2022/04/11 MongoDB