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语言的思想前提想学习js的朋友可以看看
Apr 01 Javascript
JavaScript 学习笔记一些小技巧
Mar 28 Javascript
关于用Jquery的height()、width()计算动态插入的IMG标签的宽高的问题
Dec 08 Javascript
js弹出模式对话框,并接收回传值的方法
Mar 12 Javascript
手机开发必备技巧:javascript及CSS功能代码分享
May 25 Javascript
Google 地图控件集详解及实例代码
Aug 06 Javascript
assert()函数用法总结(推荐)
Jan 25 Javascript
JavaScript中创建原子的方法总结
Aug 26 Javascript
vue动画效果实现方法示例
Mar 18 Javascript
vue+Element实现搜索关键字高亮功能
May 28 Javascript
js实现表格数据搜索
Aug 09 Javascript
vue递归实现树形组件
Jul 15 Vue.js
微信小程序实现二维码签到考勤系统
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
安装APACHE
2007/01/15 PHP
php 中文处理函数集合
2008/08/27 PHP
PHP递归算法的详细示例分析
2013/02/19 PHP
深入PHP5中的魔术方法详解
2013/06/17 PHP
php批量更改数据库表前缀实现方法
2013/10/26 PHP
PHP递归遍历多维数组实现无限分类的方法
2016/05/06 PHP
PHP7常量数组用法分析
2016/09/26 PHP
thinkphp实现把数据库中的列的值存到下拉框中的方法
2017/01/20 PHP
Laravel框架实现简单的学生信息管理平台案例
2019/05/07 PHP
TP5框架实现的数据库备份功能示例
2020/04/05 PHP
JavaScript-世界上误解最深的语言分析
2007/08/12 Javascript
javascript之bind使用介绍
2011/10/09 Javascript
JS实现拖动示例代码
2013/11/01 Javascript
jQuery多项选项卡的实现思路附样式及代码
2014/06/03 Javascript
JS框架之vue.js(深入三:组件1)
2016/09/29 Javascript
学好js,这些js函数概念一定要知道【推荐】
2017/01/19 Javascript
bootstrap fileinput组件整合Springmvc上传图片到本地磁盘
2017/05/11 Javascript
详解http访问解析流程原理
2017/10/18 Javascript
vue组件挂载到全局方法的示例代码
2018/08/02 Javascript
layer ui插件显示tips时,修改字体颜色的实现方法
2019/09/11 Javascript
Taro UI框架开发小程序实现左滑喜欢右滑不喜欢效果的示例代码
2020/05/18 Javascript
vue 实现动态路由的方法
2020/07/06 Javascript
Python 第一步 hello world
2009/09/25 Python
python3使用PyMysql连接mysql数据库实例
2017/02/07 Python
Python变量和字符串详解
2017/04/29 Python
使用Python操作FTP实现上传和下载的方法
2019/04/01 Python
对Django的restful用法详解(自带的增删改查)
2019/08/28 Python
Django DRF认证组件流程实现原理详解
2020/08/17 Python
HTML5中的强制下载属性download使用实例解析
2016/05/12 HTML / CSS
Grow Gorgeous美国官网:只要八天,体验唤醒毛囊后新生的茂密秀发
2018/06/04 全球购物
《美丽的公鸡》教学反思
2014/02/25 职场文书
小学感恩教育活动总结
2014/07/07 职场文书
2015迎新晚会开场白
2015/07/17 职场文书
2016年小学生迎国庆广播稿
2015/12/18 职场文书
浅谈MySQL user权限表
2021/06/18 MySQL
《金肉人》米特&《航海王》阿鹤声优松岛实因胰脏癌去世 享寿81岁
2022/04/13 日漫