文章目录

  • 前言
  • 一、基本思路
  • 二、代码分析
    • 1.首先为div开启绝对定位
    • 2.为document绑定键盘按下和抬起事件
    • 3.获取对应键盘的Unicode编码
    • 4.设置变量保存速度和键盘Unicode编码
    • 5.通过定时器设置移动速度和方向
  • 三、整体代码
  • 四、效果展示
  • 五、总结

前言

利用js实现键盘控制div移动,同时按下ctrl和方向键可以实现加速移动。


一、基本思路

通过js中的键盘事件来对div的移动做出响应,这里以上下左右键为例,首先获取到这四个按键的Unicode编码,然后在定时器中设置对应的移动方向和速度。

二、代码分析

1.首先为div开启绝对定位

要使div能够移动,我们要提前为div开启绝对定位,这一步决定了div是否可以移动。

2.为document绑定键盘按下和抬起事件

代码如下(示例):

// 绑定键盘按下事件
document.onkeydown = function(event){event = event || window.event;};
// 绑定键盘松开事件
document.onkeyup = function(event){event = event || window.event;};

3.获取对应键盘的Unicode编码

代码如下(示例):

document.onkeydown = function(event){event = event || window.event;console.log(event.keyCode);
};

4.设置变量保存速度和键盘Unicode编码

这里要将其定义为全局变量

//定义变量存储键盘编码(影响移动方向)
var choice = 0;
// 定义变量存储移动速度
var speed = 10;

5.通过定时器设置移动速度和方向

这里由于div移动有四种情况,所以采用switch的方法进行处理。
定时器的作用是消除防误操作带来的卡顿问题。

代码如下(示例):

// 开启定时器,控制div移动
setInterval(function(){/*** 37左* 38上* 39右* 40下*/switch(choice){case 37:demo.style.left = (demo.offsetLeft - speed) + "px";break;case 38:demo.style.top = (demo.offsetTop - speed) + "px";break;case 39:demo.style.left = (demo.offsetLeft + speed) + "px";break;case 40:demo.style.top = (demo.offsetTop + speed) + "px";break;}
},30);

三、整体代码

window.onload = function(){//获取div对象var demo = document.getElementById("box");//定义变量存储键盘编码(影响移动方向)var choice = 0;// 定义变量存储移动速度var speed = 10;// 绑定键盘按下事件document.onkeydown = function(event){event = event || window.event;// 按下ctrl时加速if(event.ctrlKey){speed = 50;}else{speed = 10;}choice = event.keyCode;console.log(choice);};// 绑定键盘松开事件document.onkeyup = function(event){event = event || window.event;choice = 0;//松开键盘div停止移动};// 开启定时器,控制div移动setInterval(function(){/*** 37左* 38上* 39右* 40下*/switch(choice){case 37:demo.style.left = (demo.offsetLeft - speed) + "px";break;case 38:demo.style.top = (demo.offsetTop - speed) + "px";break;case 39:demo.style.left = (demo.offsetLeft + speed) + "px";break;case 40:demo.style.top = (demo.offsetTop + speed) + "px";break;}},30);};

四、效果展示


五、总结

以上就是今天要讲的内容,此次主要介绍了如何利用键盘事件和定时器来完成键盘控制div的移动和加速,简单易操作。

js实现键盘控制div移动(可加速)_☆往事随風☆的博客相关推荐

  1. js实现点击按钮切换图片功能_☆*往事随風*☆的博客

    文章目录 前言 一.DOM是什么? 二.对象的HTML DOM 树 三.图片切换练习 1.要求 2.实现思路 3.示例代码 1.html示例代码如下: 2.css示例代码如下: 2.js示例代码如下: ...

  2. js实现点击按钮图片自动切换_☆往事随風☆的博客

    文章目录 前言 一.基本思路 二.代码分析 1.创建数组保存图片的存储路径 2.获取按钮对象 3.调用定时器 4.关闭定时器 三.整体代码 四.效果展示 前言 利用js实现一个图片自动切换的功能. 一 ...

  3. BootStrap使用方法为BootStrap3添加jquery.min.js文件(简单易懂)_☆往事随風☆的博客

    为BootStrap3添加jquery.min.js文件 一.前言 二.BootStrap简介 三.BootStrap3的使用方法 (1)先去官网找到BootStrap3这个版本的文档. (2)配置B ...

  4. 基于C语言的彩票开奖小程序(附源码)_☆*往事随風*☆的博客

    简易彩票开奖系统 一.基本要求: 要能够实现随机产生六位处于1-33之间的彩票号码,并且可以与用户输入的号码进行校对,最终判断用户的号码可以获得多少奖金. 二.基本原理: 利用随机数函数和数组来分别产 ...

  5. 基于51单片机实现秒表_☆往事随風☆的博客

    基于51单片机实现秒表 前言 一.实现功能 二.关键程序 (1)key函数 (2)display函数 (3)中断函数 三.完整程序 四.仿真 五.效果展示 六.项目地址 前言 基于51单片机实现一个共 ...

  6. 基于C语言的学生信息管理系统_(更新版)_(附源码和安装包)_课程设计_☆*往事随風*☆的博客

    学生信息管理系统 一.需求 基于C语言编写一个学生信息管理系统来实现对学生成绩的管理(数学.C语言.英语),系统要能够实现基本的增.删.改.查等功能,在此基础上还可以自由发挥,要求使用到数组.文件.排 ...

  7. c语言键盘移动解决停顿问题,原生js实现键盘控制div移动且解决停顿问题

    首先说明下为什么会停顿? 效果 :用键盘控制一个div移动 当按下一个方向键不放,div会先停顿一下,然后才开始持续移动. 原因:系统要区分用户是否连续输入,第一个到第二个之间有一个停顿时间 注:了解 ...

  8. 用 JS 点击左右按钮 使图片切换 - 最精简版-ljx2380000-ChinaUnix博客

    用 JS 点击左右按钮 使图片切换 - 最精简版-ljx2380000-ChinaUnix博客 代码部分: 点击(此处)折叠或打开 <!DOCTYPE html PUBLIC "-// ...

  9. 怎么禁止/开启Ubuntu自动更新升级_豆豆技术派的博客-CSDN博客_ubuntu 自动更新

    怎么禁止/开启Ubuntu自动更新升级_豆豆技术派的博客-CSDN博客_ubuntu 自动更新

最新文章

  1. 用python画太阳系_用 Python 动态模拟太阳系运转
  2. An eventually consistent data model for Erlang (and Riak)
  3. 3年,感谢你与几维安全一起经历的风风雨雨
  4. python distutils模块(貌似是用来打包发布自定义python包的)
  5. 一些学习cocos2d的网站
  6. 删除隐藏版本信息 版本回退_Qt如何给程序添加版本信息
  7. 数据结构实验三 树的遍历生成树
  8. Win7和Ubuntu14.10双系统
  9. struts2 s:property/标签的使用--输出时间格式转换
  10. 重新组织和重新生成索引sp_RefreshIndex
  11. sd卡卡槽_SD卡无法读取最完整解决办法汇总
  12. MathType与Office公式编辑器的差异
  13. c语言中闰年的流程图_c语言(算法流程图).ppt
  14. 基于Python的植被覆盖度时空变化规律分析
  15. css格式规范stylelint在vscode使用教程(ctrl+s自动智能修复)
  16. LA3713 Astronauts
  17. w3690 支持服务器内存,微星S20内存是什么
  18. pickle.load及pickle.dump
  19. php中subtr()函数的使用方法
  20. 手机短信验证码收不到怎么办?原因和解决方案全都在这里

热门文章

  1. c语言错误1004,excel宏运行时提示错误1004的三种解决方法
  2. PanDownload 一款好用的百度网盘下载工具 突破下载网速限制
  3. 底层软硬件及物联网传感技术决定数字人系统“进化”水平
  4. Web前端——HTML中的超链接
  5. 微软确认裁员1万人,遣散费约54亿元,人均获赔54万!
  6. 科创板|柏楚电子网上最终发行953.8万股 中签率0.045%
  7. 第三方直接订阅公众号的功能
  8. 一道有意思的js面试题
  9. 用python做C语言的猜数字游戏,[Python3 练习] 007 简单的猜数字小游戏
  10. 青岛大学计算机组成与结构,青岛大学计算机组成及结构1-9章作业.docx