会移动的方块

描述 按键盘上的方向键方块会移动,按住alt键和方向键进行大幅度移动

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>会移动的方块(按方向键或alt加方向键)</title>
<style>
* {margin: 0;padding: 0;}
div {width: 200px;height: 200px;position: absolute;background:cyan;}
</style>
<script>
/*
分析
左 对应的键码keyCode:37
上 对应的键码keyCode:38
右 对应的键码keyCode:39
下 对应的键码keyCode:40 */
window.onload = function(){
var oDiv = document.getElementById('div');
window.onkeydown = function(ev){
var e = ev || window.event;
//alert(e.keyCode);//查看键码
var speed = 10; //每次变化的数
//判断是否按下alt键,如果按下每次增加的数度翻十倍
if(e.altKey){
speed *= 10;
}
switch(e.keyCode){
//左
case 37:
//获取当前的有效值,获取的值有单位px 用parseInt转换成整型(去掉单位)
var current = parseInt(getStyle(oDiv, 'left'));
//每次有效样式减10px
oDiv.style.left = current - speed + 'px';
break;
//上
case 38:
//获取当前的有效值,获取的值有单位px 用parseInt转换成整型(去掉单位)
var current = parseInt(getStyle(oDiv, 'top'));
//每次有效样式减10px
oDiv.style.top = current - speed + 'px';
break;
//右
case 39:
//获取当前的有效值,获取的值有单位px 用parseInt转换成整型(去掉单位)
var current = parseInt(getStyle(oDiv, 'left'));
//每次有效样式加10px
oDiv.style.left = current + speed + 'px';
break;
//下
case 40:
//获取当前的有效值,获取的值有单位px 用parseInt转换成整型(去掉单位)
var current = parseInt(getStyle(oDiv, 'top'));
//每次有效样式加10px
oDiv.style.top = current + speed + 'px';
break;
}
} } /*------封装获取当前有效样式的函数---------*/
function getStyle(node, styleType){
return node.currentStyle ? node.currentStyle[styleType] : getComputedStyle(node)[styleType];
} /*------封装获取当前有效样式的函数end---------*/ </script>
</head>
<body>
<div id="div"></div>
</body>
</html>

浏览器效果:

才此基础上插入一个背景图加以修饰

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>会移动的凤凰(按方向键或alt加方向键)</title>
<style>
* {margin: 0;padding: 0;}
div {width: 293px;height: 220px;position: absolute;background:url(fenghuang1.gif);}
</style>
<script>
/*
分析
左 对应的键码keyCode:37
上 对应的键码keyCode:38
右 对应的键码keyCode:39
下 对应的键码keyCode:40 */
window.onload = function(){
var oDiv = document.getElementById('div');
window.onkeydown = function(ev){
var e = ev || window.event;
//alert(e.keyCode);//查看键码
var speed = 10; //每次变化的数
//判断是否按下alt键,如果按下每次增加的数度翻十倍
if(e.altKey){
speed *= 10;
}
switch(e.keyCode){
//左
case 37:
//获取当前的有效值,获取的值有单位px 用parseInt转换成整型(去掉单位)
var current = parseInt(getStyle(oDiv, 'left'));
//每次有效样式减10px
oDiv.style.left = current - speed + 'px';
//按下 左时 div第transform 都等于 逆时针180度
oDiv.style.transform = 'rotate(-180deg)';
break;
//上
case 38:
//获取当前的有效值,获取的值有单位px 用parseInt转换成整型(去掉单位)
var current = parseInt(getStyle(oDiv, 'top'));
//每次有效样式减10px
oDiv.style.top = current - speed + 'px';
//按下 上时 div第transform 都等于 逆时针90度
oDiv.style.transform = 'rotate(-90deg)';
break;
//右
case 39:
//获取当前的有效值,获取的值有单位px 用parseInt转换成整型(去掉单位)
var current = parseInt(getStyle(oDiv, 'left'));
//每次有效样式加10px
oDiv.style.left = current + speed + 'px';
//按下 右时 div第transform 都等于 逆时针0度
oDiv.style.transform = 'rotate(0deg)';
break;
//下
case 40:
//获取当前的有效值,获取的值有单位px 用parseInt转换成整型(去掉单位)
var current = parseInt(getStyle(oDiv, 'top'));
//每次有效样式加10px
oDiv.style.top = current + speed + 'px';
//按下 右时 div第transform 都等于 顺时针90度
oDiv.style.transform = 'rotate(90deg)';
break;
}
} } /*------封装获取当前有效样式的函数---------*/
function getStyle(node, styleType){
return node.currentStyle ? node.currentStyle[styleType] : getComputedStyle(node)[styleType];
} /*------封装获取当前有效样式的函数end---------*/ </script>
</head>
<body>
<div id="div"></div>
</body>
</html>

浏览器效果:

使用到的图片:

利用js键盘事件制作会移动效果的更多相关文章

  1. js键盘事件全面控制详解

      js键盘事件全面控制 主要分四个部分第一部分:浏览器的按键事件第二部分:兼容浏览器第三部分:代码实现和优化第四部分:总结 第一部分:浏览器的按键事件 用js实现键盘记录,要关注浏览器的三种按键事件 ...

  2. js键盘事件全面控制

    js键盘事件全面控制 主要分四个部分第一部分:浏览器的按键事件第二部分:兼容浏览器第三部分:代码实现和优化第四部分:总结 第一部分:浏览器的按键事件 用js实现键盘记录,要关注浏览器的三种按键事件类型 ...

  3. js键盘事件全面控制详解【转】

    js键盘事件全面控制 主要分四个部分第一部分:浏览器的按键事件第二部分:兼容浏览器第三部分:代码实现和优化第四部分:总结 第一部分:浏览器的按键事件 用js实现键盘记录,要关注浏览器的三种按键事件类型 ...

  4. JS键盘事件对象之keyCode、charCode、which属性对比

    先说一些有关键盘事件的事项:用js实现键盘记录,要关注浏览器的三种按键事件类型,即keydown,keypress和keyup,它们分别对应onkeydown. onkeypress和onkeyup这 ...

  5. 关于js键盘事件的例子

    JavaScript onkeydown 事件 用户按下一个键盘按键时会触发 onkeydown 事件.与 onkeypress事件不同的是,onkeydown 事件是响应任意键按下的处理(包括功能键 ...

  6. js键盘事件和焦点事件

    键盘事件onkeydown //当键盘按下的时候触发onkeyup //但键盘抬起的时候触发event.keyCode //数字类型 键盘按键的键值功能键 ctrlkey shiftkey altke ...

  7. Js键盘事件全面控制,回车按键事件,键盘对应按键码,按键事件兼容各个浏览器。

    在网上查询的按键码如下: 一.键盘按键和键盘对应代码表:   字母按键码A <--------> 65 B <--------> 66 C <--------> 6 ...

  8. js 键盘事件keyCode 总结

    开发中经常页面中的某些按钮或元素需要绑定到键盘的输入事件 keydown.keyup 事件 keydown 键盘按下触发事件 $("#btn").keydown(function( ...

  9. js键盘事件

    弱鸡今天在写键盘事件,发生一个小bug,排查了1小时(">皿<)可恶的浏览器竟然还不报错!!原因是将e.ctrlKey写成了e.ctrLKey,o(゚Д゚)っ 想想都要生气< ...

随机推荐

  1. Java中Dom4j解析XML

    与利用DOM.SAX.JAXP机制来解析xml相比DOM4J表现更优秀,具有性能优异.功能强大和极端易用使用的特点,只要懂得DOM基本概念,就可以通过dom4j的api文档来解析xml.dom4j是一 ...

  2. JQuery弹出层,点击按钮后弹出遮罩层,有关闭按钮【转】

    <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <t ...

  3. LaTeX简历模板

    %# -*- coding:utf-8 -*- %% start of file `template_en.tex'. %% Copyright 2006-1008 Xavier Danaux (xd ...

  4. Python生成唯一id的方法

    1. uuid import uuid def create_uid(): return str(uuid.uuid1()) if __name__ == '__main__': print(type ...

  5. Parent Proxy 和 Origin Server配置学习

    Parent Proxy Configuration proxy.config.http.parent_proxy_routing_enable 开启/关闭parent caching: proxy. ...

  6. 基于Redis主从复制读写分离架构的Session共享(Windows Server)

    搭建主从复制 1.安装软件 下载Redis-x64-3.2.100.zip:https://github.com/MicrosoftArchive/redis/releases 第一步:将Redis拷 ...

  7. 夏令时(DST)测试

    夏令时测试是比较小众的测试,主要针对在有夏令时的国家使用的软件,如果你接触到了这方面的测试,说明你在挣国外的钱:).   话不多说,先来介绍下什么是夏令时:   夏时制,夏时令(Daylight Sa ...

  8. springboot+rabbitmq整合示例程

    关于什么是rabbitmq,请看另一篇文: http://www.cnblogs.com/boshen-hzb/p/6840064.html 一.新建maven工程:springboot-rabbit ...

  9. Java EE之Hibernate异常总结【3】Disabling contextual LOB creation as createClob() method threw error java.lang.reflect.InvocationTargetException

    参考文献:https://stackoverflow.com/questions/4588755/disabling-contextual-lob-creation-as-createclob-met ...

  10. k8s系列~mgr的应用

    一  简介:今天咱们大体介绍下 这两者是如何联系的二  概念解析     pod:说下我的理解    1 pod通过yaml文件来封装docker本身+启动形式    2 pod可以运行多个docke ...