js实现上下左右键盘控制div移动


Posted in Javascript onJanuary 16, 2020

本文实例为大家分享了js上下左右键盘控制div移动的具体代码,供大家参考,具体内容如下

描述:

div通过键盘事件上下左右实现div块的移动

效果: 

js实现上下左右键盘控制div移动

实现:

js:

var Method=(function () {
  return {
    EVENT_ID:"event_id",
    loadImage:function (arr) {
      var img=new Image();
      img.arr=arr;
      img.list=[];
      img.num=0;
//      如果DOM对象下的事件侦听没有被删除掉,将会常驻堆中
//      一旦触发了这个事件需要的条件,就会继续执行事件函数
      img.addEventListener("load",this.loadHandler);
      img.self=this;
      img.src=arr[img.num];
    },
    loadHandler:function (e) {
      this.list.push(this.cloneNode(false));
      this.num++;
      if(this.num>this.arr.length-1){
        this.removeEventListener("load",this.self.loadHandler);
        var evt=new Event(Method.EVENT_ID);
        evt.list=this.list;
        document.dispatchEvent(evt);
        return;
      }
      this.src=this.arr[this.num];
    },
    $c:function (type,parent,style) {
      var elem=document.createElement(type);
      if(parent) parent.appendChild(elem);
      for(var key in style){
        elem.style[key]=style[key];
      }
      return elem;
    },
    divColor: function () {
      var col="#";//这个字符串第一位为# 颜色的格式
      for(var i=0;i<6;i++){
        col+=parseInt(Math.random()*16).toString(16);//rondom*16后的随机值即为0-1*16==0-16;  toString(16)为转化为16进制
      }
      return col;//最后返回一个七位的值 格式即为#nnnnnn 颜色的格式
    },
    random:function (min,max) {
      max=Math.max(min,max);
      min=Math.min(min,max);
      return Math.floor(Math.random()*(max-min)+min);
    },
    dragElem:function (elem) {
      elem.addEventListener("mousedown",this.mouseDragHandler);
      elem.self=this;
    },
    removeDrag:function (elem) {
      elem.removeEventListener("mousedown",this.mouseDragHandler);
    },
    mouseDragHandler:function (e) {
      if(e.type==="mousedown"){
        e.stopPropagation();
        e.preventDefault();
        document.point={x:e.offsetX,y:e.offsetY};
        document.elem=this;
        this.addEventListener("mouseup",this.self.mouseDragHandler);
        document.addEventListener("mousemove",this.self.mouseDragHandler);
      }else if(e.type==="mousemove"){
        this.elem.style.left=e.x-this.point.x+"px";
        this.elem.style.top=e.y-this.point.y+"px";
      }else if(e.type==="mouseup"){
        this.removeEventListener("mouseup",this.self.mouseDragHandler);
        document.removeEventListener("mousemove",this.self.mouseDragHandler);
      }
    }
  }
})();

html:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
  <script src="js/Method.js"></script>
</head>
<body>
<script>
  var div;
  var code=[];
  var speed=2;
  var bool=false;
  init();
  function init() {
    div=Method.$c("div",document.body,{
      width:"50px",
      height:"50px",
      backgroundColor:"red",
      position:"absolute",
      left:0,
      top:0
    });
    window.addEventListener("keydown",keyHandler);
    window.addEventListener("keyup",keyHandler);
    setInterval(animation,16);
  }
 
  function keyHandler(e) {
    if(e.type==="keydown" && (!bool || code.indexOf(e.keyCode)===-1)){
      bool=true;
      code.push(e.keyCode);
    }else if(e.type==="keyup"){
      bool=false;
      code.length=0;
    }
  }
 
  function animation() {
    if(!bool)return;
    for(var i=0;i<code.length;i++){
      switch (code[i]){
        case 37:
          div.style.left=div.offsetLeft-speed+"px";
          break;
        case 38:
          div.style.top=div.offsetTop-speed+"px";
          break;
        case 39:
          div.style.left=div.offsetLeft+speed+"px";
          break;
        case 40:
          div.style.top=div.offsetTop+speed+"px";
          break;
      }
    }
  }
</script>
</body>
</html>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jquery的index方法实现tab效果
Feb 16 Javascript
jquery js 重置表单 reset()具体实现代码
Aug 05 Javascript
JavaScript随机生成颜色的方法
Oct 15 Javascript
javascript ASCII和Hex互转的实现方法
Dec 27 Javascript
javascript 秒表计时器实现代码
Mar 09 Javascript
微信小程序开发图片拖拽实例详解
May 05 Javascript
vue 实现小程序或商品秒杀倒计时
Apr 14 Javascript
简单了解Ajax表单序列化的实现方法
Jun 14 Javascript
react实现antd线上主题动态切换功能
Aug 12 Javascript
解决Vue 给mapState中定义的属性赋值报错的问题
Jun 22 Javascript
使用Vue-scroller页面input框不能触发滑动的问题及解决方法
Aug 08 Javascript
Vue绑定用户接口实现代码示例
Nov 04 Javascript
vue-cli3 取消eslint校验代码的解决办法
Jan 16 #Javascript
jQuery实现数字华容道小游戏(实例代码)
Jan 16 #jQuery
js实现点击生成随机div
Jan 16 #Javascript
关于vue3.0中的this.$router.replace({ path: '/'})刷新无效果问题
Jan 16 #Javascript
JS实现可视化音频效果的实例代码
Jan 16 #Javascript
js实现div色块碰撞
Jan 16 #Javascript
Vue实现 点击显示再点击隐藏效果(点击页面空白区域也隐藏效果)
Jan 16 #Javascript
You might like
Http 1.1 Etag 与 Last-Modified提高php效率
2008/01/10 PHP
php adodb分页实现代码
2009/03/19 PHP
掌握PHP垃圾回收机制详解
2019/03/13 PHP
JS动画效果打开、关闭层的实现方法
2015/05/09 Javascript
以Python代码实例展示kNN算法的实际运用
2015/10/26 Javascript
jQuery实现控制文字内容溢出用省略号(…)表示的方法
2016/02/26 Javascript
使用React实现轮播效果组件示例代码
2016/09/05 Javascript
js实现移动端微信页面禁止字体放大
2017/02/16 Javascript
JS实现一个简单的日历
2017/02/22 Javascript
React Native时间转换格式工具类分享
2017/10/24 Javascript
vue.js中ref和$refs的使用及示例讲解
2019/08/14 Javascript
JavaScript的查询机制LHS和RHS解析
2019/08/16 Javascript
vue项目中使用eslint+prettier规范与检查代码的方法
2020/01/16 Javascript
Python实现控制台进度条功能
2016/01/04 Python
详解python3百度指数抓取实例
2016/12/12 Python
Python基于pygame模块播放MP3的方法示例
2017/09/30 Python
详解Python判定IP地址合法性的三种方法
2018/03/06 Python
python批量设置多个Excel文件页眉页脚的脚本
2018/03/14 Python
Python Pandas找到缺失值的位置方法
2018/04/12 Python
windows下搭建python scrapy爬虫框架步骤
2018/12/23 Python
python 产生token及token验证的方法
2018/12/26 Python
Python中zip()函数的简单用法举例
2019/09/02 Python
python画微信表情符的实例代码
2019/10/09 Python
解决keras backend 越跑越慢问题
2020/06/18 Python
Stuart Weitzman美国官网:美国奢华鞋履品牌
2016/08/18 全球购物
计算机工程学院个人求职信
2013/10/05 职场文书
计算机专业推荐信范文
2013/11/27 职场文书
园艺师求职信
2014/03/10 职场文书
写求职信要注意什么问题
2014/04/12 职场文书
读书活动总结范文
2014/04/26 职场文书
市场营销工作计划书
2014/05/06 职场文书
2015年世界卫生日活动总结
2015/02/09 职场文书
创先争优活动个人总结
2015/03/04 职场文书
房地产项目合作意向书
2015/05/08 职场文书
音乐研修感悟
2015/11/18 职场文书
Mac M1安装mnmp (Mac+Nginx+MySQL+PHP) 开发环境
2021/03/29 PHP