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 相关文章推荐
用js实现键盘方向键翻页功能的代码
Jun 03 Javascript
JavaScript中的单引号和双引号报错的解决方法
Sep 01 Javascript
JS判断图片是否加载完成方法汇总(最新版)
May 13 Javascript
在web中js实现类似excel的表格控件
Sep 01 Javascript
jQuery中常用动画效果函数(日常整理)
Sep 17 Javascript
js转html实体的方法
Sep 27 Javascript
Vue.js组件tree实现无限级树形菜单
Dec 02 Javascript
微信小程序开发之入门实例教程篇
Mar 07 Javascript
使用百度地图实现地图网格的示例
Feb 06 Javascript
vscode下的vue文件格式化问题
Nov 28 Javascript
js键盘事件实现人物的行走
Jan 17 Javascript
Vue $emit()不能触发父组件方法的原因及解决
Jul 28 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
cakephp打印sql语句的方法
2015/02/13 PHP
php实现的通用图片处理类
2015/03/24 PHP
PHP解压tar.gz格式文件的方法
2016/02/14 PHP
PHP实现json_decode不转义中文的方法
2017/05/20 PHP
浅谈PHP接入(第三方登录)QQ登录 OAuth2.0 过程中遇到的坑
2017/10/13 PHP
PHP实现的字符串匹配算法示例【sunday算法】
2017/12/19 PHP
gearman管理工具GearmanManager的安装与php使用方法示例
2020/02/27 PHP
获取网站跟路径的javascript代码(站点及虚拟目录)
2009/10/20 Javascript
Javascript的匿名函数小结
2009/12/31 Javascript
js使用eval解析json实例与注意事项分享
2014/01/18 Javascript
js实现格式化金额,字符,时间的方法
2015/02/26 Javascript
JS实现点击按钮控制Div变宽、增高及调整背景色的方法
2015/08/05 Javascript
基于javascript实现泡泡大冒险网页版小游戏
2016/03/23 Javascript
学习vue.js条件渲染
2016/12/03 Javascript
zTree异步加载展开第一级节点的实现方法
2017/09/05 Javascript
Node.js 中使用 async 函数的方法
2017/11/20 Javascript
浅析node.js的模块加载机制
2018/05/25 Javascript
微信小程序实现文字从右向左无限滚动
2020/11/18 Javascript
JS判断数组里是否有重复元素的方法小结
2019/05/21 Javascript
详解Vue-cli3.X使用px2rem遇到的问题
2019/08/09 Javascript
vue-cli2与vue-cli3在一台电脑共存的实现方法
2019/09/25 Javascript
JS闭包原理及其使用场景解析
2020/12/03 Javascript
[56:57]LGD vs VP 2019DOTA2国际邀请赛淘汰赛 胜者组赛BO3 第一场 8.20.mp4
2019/08/22 DOTA
跟老齐学Python之用while来循环
2014/10/02 Python
Python赋值语句后逗号的作用分析
2015/06/08 Python
Flask框架重定向,错误显示,Responses响应及Sessions会话操作示例
2019/08/01 Python
基于Django OneToOneField和ForeignKey的区别详解
2020/03/30 Python
北美个性化礼品商店:Things Remembered
2018/06/12 全球购物
韩国演唱会订票网站:StubHub韩国
2019/01/17 全球购物
CSMA/CD介质访问控制协议
2015/11/17 面试题
C#公司笔试题
2014/03/28 面试题
报关员个人职业生涯规划书
2014/03/12 职场文书
体育口号大全
2014/06/18 职场文书
经典搞笑版检讨书
2015/02/19 职场文书
Python机器学习之逻辑回归
2021/05/11 Python
Python接口自动化之文件上传/下载接口详解
2022/04/05 Python