利用js键盘事件制作会移动效果
会移动的方块
描述 按键盘上的方向键方块会移动,按住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键盘事件制作会移动效果的更多相关文章
- js键盘事件全面控制详解
js键盘事件全面控制 主要分四个部分第一部分:浏览器的按键事件第二部分:兼容浏览器第三部分:代码实现和优化第四部分:总结 第一部分:浏览器的按键事件 用js实现键盘记录,要关注浏览器的三种按键事件 ...
- js键盘事件全面控制
js键盘事件全面控制 主要分四个部分第一部分:浏览器的按键事件第二部分:兼容浏览器第三部分:代码实现和优化第四部分:总结 第一部分:浏览器的按键事件 用js实现键盘记录,要关注浏览器的三种按键事件类型 ...
- js键盘事件全面控制详解【转】
js键盘事件全面控制 主要分四个部分第一部分:浏览器的按键事件第二部分:兼容浏览器第三部分:代码实现和优化第四部分:总结 第一部分:浏览器的按键事件 用js实现键盘记录,要关注浏览器的三种按键事件类型 ...
- JS键盘事件对象之keyCode、charCode、which属性对比
先说一些有关键盘事件的事项:用js实现键盘记录,要关注浏览器的三种按键事件类型,即keydown,keypress和keyup,它们分别对应onkeydown. onkeypress和onkeyup这 ...
- 关于js键盘事件的例子
JavaScript onkeydown 事件 用户按下一个键盘按键时会触发 onkeydown 事件.与 onkeypress事件不同的是,onkeydown 事件是响应任意键按下的处理(包括功能键 ...
- js键盘事件和焦点事件
键盘事件onkeydown //当键盘按下的时候触发onkeyup //但键盘抬起的时候触发event.keyCode //数字类型 键盘按键的键值功能键 ctrlkey shiftkey altke ...
- Js键盘事件全面控制,回车按键事件,键盘对应按键码,按键事件兼容各个浏览器。
在网上查询的按键码如下: 一.键盘按键和键盘对应代码表: 字母按键码A <--------> 65 B <--------> 66 C <--------> 6 ...
- js 键盘事件keyCode 总结
开发中经常页面中的某些按钮或元素需要绑定到键盘的输入事件 keydown.keyup 事件 keydown 键盘按下触发事件 $("#btn").keydown(function( ...
- js键盘事件
弱鸡今天在写键盘事件,发生一个小bug,排查了1小时(">皿<)可恶的浏览器竟然还不报错!!原因是将e.ctrlKey写成了e.ctrLKey,o(゚Д゚)っ 想想都要生气< ...
随机推荐
- C++面试集锦( 面试被问到的问题 )
1. C 和 C++ 区别 2. const 有什么用途 主要有三点: 1:定义只读变量,即常量 2:修饰函数的参数和函数的返回值 3: 修饰函数的定义体,这里的函数为类的成员函数,被cons ...
- Hive记录-配置客户端可视化管理工具远程连接
配置客户端远程连接(方便可视化工具操作)-不需要在hive服务器上敲命令了 1.安装DBeaver工具:https://dbeaver.com/download/ 2.准备相关驱动文件(服务器上hiv ...
- java 多线程断点下载功能
import java.io.File; import java.io.FileInputStream; import java.io.InputStream; import java.io.Rand ...
- Failed to load or instantiate TagLibraryValidator class: org.apache.taglibs.standard.tlv.JstlCoreTLV
今天在使用JSP,引入<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> ...
- 如何利用 Jmeter 测试上传文件
在查看本文的前提,有如下几点: 会使用Jmeter,知道如何去添加http请求的sampler 会利用Jmeter完成基本的http请求或者是接口测试 知道文件上传是怎么回事 言归正传,其实文件上传我 ...
- python标准库 - 数学库和随机数库
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 我们已经在Python运算中看到Python最基本的数学运算功能.此外,math包 ...
- python - class类 (三) 类的组合
类的组合: #组合 class A1(): def pr(self): return 'a1' class A2(): def pr(self): return 'a2' class A3(): de ...
- Latex 公式颜色
如何给这个公式加上颜色? 解决方法: \usepackage{xcolor} \begin{align} \textcolor{red}{\int_a^b}\textcolor{blue}{f(x ...
- css 背景图片自适应元素大小
一.一种比较土的方法,<img>置于底层. 方法如下: CSS代码: HTML: <img src="背景图片路径" /> <span>字在背景 ...
- python计算最大公约数和最小公倍数
a=4 b=2 def gcd(a,b): return a if b==0 else gcd(b,a%b) def lcm(a,b): return a*b//gcd(a,b) print(gcd( ...