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 订制自己的AlertBox(信息提示框)
Jan 09 Javascript
JQuery的自定义事件代码,触发,绑定简单实例
Aug 01 Javascript
javascript数字时钟示例分享
Apr 23 Javascript
javascript使用smipleChart实现简单图表
Jan 02 Javascript
浅析Javascript中bind()方法的使用与实现
May 30 Javascript
JS实现简单的tab切换选项卡效果
Sep 21 Javascript
JavaScript你不知道的一些数组方法
Aug 18 Javascript
js实现扫雷小程序的示例代码
Sep 27 Javascript
mockjs,json-server一起搭建前端通用的数据模拟框架教程
Dec 18 Javascript
JS调用安卓手机摄像头扫描二维码
Oct 16 Javascript
js实现一款简单踩白块小游戏(曾经很火)
Dec 02 Javascript
js实现查询商品案例
Jul 22 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
PHP 面向对象实现代码
2009/11/11 PHP
php实现根据url自动生成缩略图的方法
2014/09/23 PHP
PHP CURL 内存泄露问题解决方法
2015/02/12 PHP
使用Huagepage和PGO来提升PHP7的执行性能
2015/11/30 PHP
thinkphp中多表查询中防止数据重复的sql语句(必看)
2016/09/22 PHP
PHP7标量类型declare用法实例分析
2016/09/26 PHP
Zend Framework框架实现类似Google搜索分页效果
2016/11/25 PHP
PHP论坛实现积分系统的思路代码详解
2020/06/01 PHP
javascript Keycode对照表
2009/10/24 Javascript
利用函数的惰性载入提高javascript代码执行效率
2014/05/05 Javascript
jQuery实现的兼容性浮动层示例
2016/08/02 Javascript
Nodejs处理异常操作示例
2018/12/25 NodeJs
详解auto-vue-file:一个自动创建vue组件的包
2019/04/26 Javascript
Node.js中文件系统fs模块的使用及常用接口
2020/03/06 Javascript
JavaScript变量Dom对象的所有属性
2020/04/30 Javascript
[23:18]Spirit vs Liquid Supermajor小组赛A组 BO3 第二场 6.2
2018/06/03 DOTA
Python三元运算实现方法
2015/01/12 Python
Django2.1.3 中间件使用详解
2018/11/26 Python
python进行TCP端口扫描的实现
2018/12/21 Python
Python数据结构与算法(几种排序)小结
2019/06/22 Python
Python使用itchat 功能分析微信好友性别和位置
2019/08/05 Python
Django实现文件上传下载
2019/10/06 Python
Python Opencv 通过轨迹(跟踪)栏实现更改整张图像的背景颜色
2020/03/09 Python
解决python 虚拟环境删除包无法加载的问题
2020/07/13 Python
安装pyecharts1.8.0版本后导入pyecharts模块绘图时报错: “所有图表类型将在 v1.9.0 版本开始强制使用 ChartItem 进行数据项配置 ”的解决方法
2020/08/18 Python
Python requests HTTP验证登录实现流程
2020/11/05 Python
HTML5中判断横屏竖屏的方法(移动端)
2016/08/04 HTML / CSS
美国豪华时尚女性精品店:Kirna Zabête
2018/01/11 全球购物
Molly Bracken法国电子商店:法国女性时尚品牌
2019/07/24 全球购物
用你熟悉的语言写一个连接ORACLE数据库的程序,能够完成修改和查询工作
2012/06/11 面试题
华为C++笔试题
2014/08/05 面试题
大学生自助营养快餐店创业计划书
2014/01/13 职场文书
总经理岗位职责范本
2014/02/02 职场文书
党性教育心得体会
2014/09/03 职场文书
财政局个人年终总结
2015/03/03 职场文书
Go web入门Go pongo2模板引擎
2022/05/20 Golang