js实现键盘控制DIV移动的方法


Posted in Javascript onJanuary 10, 2015

本文实例讲述了js实现键盘控制DIV移动的方法。分享给大家供大家参考。具体分析如下:

css样式部分:

<style type="text/css"> 

html,body{overflow:hidden;}

body{margin:0;padding:0;}

pre{color:green;padding:10px 15px;background:#f0f0f0;border:1px dotted #333;font:12px/1.5 Courier New;margin:12px;}

span{color:#999;}

#box{position:absolute;top:50px;left:300px;width:100px;height:100px;background:red;}

</style>

js部分:

<script type="text/javascript"> 

window.onload = function ()

{

var oBox = document.getElementById("box");

var bLeft = bTop = bRight = bBottom = bCtrlKey = false;
setInterval(function ()

{

if (bLeft)

{

oBox.style.left = oBox.offsetLeft - 10 + "px"

}

else if (bRight)

{

oBox.style.left = oBox.offsetLeft + 10 + "px"

}
if (bTop)

{

oBox.style.top = oBox.offsetTop - 10 + "px" 

}

else if(bBottom)

{

oBox.style.top = oBox.offsetTop + 10 + "px"

}

//防止溢出

limit();

},30); 
document.onkeydown = function (event)

{

var event = event || window.event;

bCtrlKey = event.ctrlKey;
switch (event.keyCode)

{

case 37:

bLeft = true;

break;

case 38:

if(bCtrlKey)

{

var oldWidth = oBox.offsetWidth;

var oldHeight = oBox.offsetHeight;
oBox.style.width = oBox.offsetWidth * 1.5 + "px";

oBox.style.height = oBox.offsetHeight * 1.5 + "px"; 
oBox.style.left = oBox.offsetLeft - (oBox.offsetWidth - oldWidth) / 2 + "px";

oBox.style.top = oBox.offsetTop - (oBox.offsetHeight - oldHeight) / 2 + "px";
break; 

}

bTop = true;

break;

case 39:

bRight = true;

break;

case 40:

if(bCtrlKey)

{

var oldWidth = oBox.offsetWidth;

var oldHeight = oBox.offsetHeight;
oBox.style.width = oBox.offsetWidth * 0.75 + "px";

oBox.style.height = oBox.offsetHeight * 0.75 + "px"; 
oBox.style.left = oBox.offsetLeft - (oBox.offsetWidth - oldWidth) / 2 + "px";

oBox.style.top = oBox.offsetTop - (oBox.offsetHeight - oldHeight) / 2 + "px";
break; 

}

bBottom = true;

break;

case 49:

bCtrlKey && (oBox.style.background = "green");

break;

case 50:

bCtrlKey && (oBox.style.background = "yellow");

break;

case 51:

bCtrlKey && (oBox.style.background = "blue");

break;

}
return false

};
document.onkeyup = function (event)

{

switch ((event || window.event).keyCode)

{

case 37:

bLeft = false;

break;

case 38:

bTop = false;

break;

case 39:

bRight = false;

break;

case 40:

bBottom = false;

break;

}

};
//防止溢出

function limit()

{

var doc = [document.documentElement.clientWidth, document.documentElement.clientHeight]

//防止左侧溢出

oBox.offsetLeft <=0 && (oBox.style.left = 0);

//防止顶部溢出

oBox.offsetTop <=0 && (oBox.style.top = 0);

//防止右侧溢出

doc[0] - oBox.offsetLeft - oBox.offsetWidth <= 0 && (oBox.style.left = doc[0] - oBox.offsetWidth + "px");

//防止底部溢出

doc[1] - oBox.offsetTop - oBox.offsetHeight <= 0 && (oBox.style.top = doc[1] - oBox.offsetHeight + "px")

}

};

</script>

说明:

上:↑ 下:↓ 左:← 右:→
Ctrl + 1 : 背景变为绿色
Ctrl + 2 : 背景变为黄色
Ctrl + 3 : 背景变为蓝色
Ctrl + ↑ : 放大
Ctrl + ↓ : 缩小

html部分:

被移动的方块【DIV】

<div id="box"></div>

希望本文所述对大家的javascript程序设计有所帮助。

Javascript 相关文章推荐
使用Javascript和DOM Interfaces来处理HTML
Oct 09 Javascript
jQuery代码优化 事件委托篇
Nov 01 Javascript
jQuery实现form表单reset按钮重置清空表单功能
Dec 18 Javascript
将字符串转换成gb2312或者utf-8编码的参数(js版)
Apr 10 Javascript
JavaScript实现找质数代码分享
Mar 24 Javascript
JavaScript动态添加列的方法
Mar 25 Javascript
输入法的回车与消息发送快捷键回车的冲突解决方法
Aug 09 Javascript
JS简单实现禁止访问某个页面的方法
Sep 13 Javascript
JavaScript通过改变文字透明度实现的文字闪烁效果实例
Apr 27 Javascript
js字符限制(字符截取) 一个中文汉字算两个字符
Sep 12 Javascript
video.js 实现视频只能后退不能快进的思路详解
Aug 09 Javascript
如何在项目中使用log4.js的方法步骤
Jul 16 Javascript
js实现jquery的offset()方法实例
Jan 10 #Javascript
《JavaScript DOM 编程艺术》读书笔记之JavaScript 图片库
Jan 09 #Javascript
《JavaScript DOM 编程艺术》读书笔记之DOM基础
Jan 09 #Javascript
《JavaScript DOM 编程艺术》读书笔记之JavaScript 语法
Jan 09 #Javascript
《JavaScript DOM 编程艺术》读书笔记之JavaScript 简史
Jan 09 #Javascript
javascript获取四位数字或者字母的随机数
Jan 09 #Javascript
JS JQUERY实现滚动条自动滚到底的方法
Jan 09 #Javascript
You might like
PHP注释实例技巧
2008/10/03 PHP
php验证手机号码(支持归属地查询及编码为UTF8)
2013/02/01 PHP
php实现快速排序的三种方法分享
2014/03/12 PHP
PHP多文件上传实例
2015/07/09 PHP
PHP获取某个月最大天数(最后一天)的方法
2015/07/29 PHP
ThinkPHP5分页paginate代码实例解析
2020/11/10 PHP
javascript编程起步(第六课)
2007/02/27 Javascript
javascript操作cookie的文章(设置,删除cookies)
2010/04/01 Javascript
JavaScript和JQuery实用代码片段(一)
2010/04/07 Javascript
javascript 基础篇4 window对象,DOM
2012/03/14 Javascript
使用jQuery.wechat构建微信WEB应用
2014/10/09 Javascript
JavaScript中的包装对象介绍
2015/01/27 Javascript
node.js路径处理方法以及绝对路径详解
2021/03/04 Javascript
javascript作用域链与执行环境详解
2017/03/25 Javascript
JS实现异步上传压缩图片
2017/04/22 Javascript
AngularJS 的$timeout服务示例代码
2017/09/21 Javascript
js原生实现移动端手指滑动轮播图效果的示例
2018/01/02 Javascript
JS中‘hello’与new String(‘hello’)引出的问题详解
2018/08/14 Javascript
vue+element-ui JYAdmin后台管理系统模板解析
2020/07/28 Javascript
pycharm 使用心得(九)解决No Python interpreter selected的问题
2014/06/06 Python
用Python从零实现贝叶斯分类器的机器学习的教程
2015/03/31 Python
python复制与引用用法分析
2015/04/08 Python
用Python编写一个每天都在系统下新建一个文件夹的脚本
2015/05/04 Python
django请求返回不同的类型图片json,xml,html的实例
2018/05/22 Python
Centos 升级到python3后pip 无法使用的解决方法
2018/06/12 Python
python实现的生成word文档功能示例
2019/08/23 Python
pandas中遍历dataframe的每一个元素的实现
2019/10/23 Python
如何使用pycharm连接Databricks的步骤详解
2020/09/23 Python
解决pytorch 的state_dict()拷贝问题
2021/03/03 Python
pip/anaconda修改镜像源,加快python模块安装速度的操作
2021/03/04 Python
什么是跨站脚本攻击
2014/12/11 面试题
自我鉴定范文
2013/11/10 职场文书
社团2014年植树节活动总结
2014/03/11 职场文书
医德医风演讲稿
2014/05/20 职场文书
个人德育工作总结
2015/03/05 职场文书
漫画《催眠麦克风-Dawn Of Divisions》第二卷PV公开
2022/04/05 日漫