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 相关文章推荐
JS的递增/递减运算符和带操作的赋值运算符的等价式
Dec 08 Javascript
js用Date对象处理时间实现思路及代码
Jan 31 Javascript
js中opener与parent的区别详细解析
Jan 14 Javascript
利用Jquery实现可多选的下拉框
Feb 21 Javascript
理解Angular数据双向绑定
Jan 10 Javascript
Jquery实现纵向横向菜单
Jan 24 Javascript
基于JavaScript实现弹出框效果
Feb 19 Javascript
原生js实现秒表计时器功能
Feb 16 Javascript
jQuery正则验证注册页面经典实例
Jun 10 jQuery
Javascript地址引用代码实例解析
Feb 25 Javascript
ES6函数和数组用法实例分析
May 23 Javascript
解决vue加scoped后就无法修改vant的UI组件的样式问题
Sep 07 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
10条PHP编程习惯助你找工作
2008/09/29 PHP
CI框架在CLI下执行占用内存过大问题的解决方法
2014/06/17 PHP
无缝滚动改进版支持上下左右滚动(封装成函数)
2012/12/04 Javascript
MyEclipse取消验证Js的两种方法
2013/11/14 Javascript
node.js中的buffer.slice方法使用说明
2014/12/10 Javascript
jQuery实现iframe父窗体和子窗体的相互调用
2016/06/17 Javascript
BootStrap 动态添加验证项和取消验证项的实现方法
2016/09/28 Javascript
jQuery如何防止Ajax重复提交
2016/10/14 Javascript
简单实现JS倒计时效果
2016/12/23 Javascript
微信小程序常见页面跳转操作简单示例
2019/05/01 Javascript
微信小程序上传图片并等比列压缩到指定大小的实例代码
2019/10/24 Javascript
[45:38]DOTA2上海特级锦标赛主赛事日 - 1 胜者组第一轮#1Liquid VS Alliance第一局
2016/03/02 DOTA
Django与JS交互的示例代码
2017/08/23 Python
python生成tensorflow输入输出的图像格式的方法
2018/02/12 Python
python中的&amp;&amp;及||的实现示例
2019/08/07 Python
Python爬虫 批量爬取下载抖音视频代码实例
2019/08/16 Python
TENSORFLOW变量作用域(VARIABLE SCOPE)
2020/01/10 Python
Python paramiko 模块浅谈与SSH主要功能模拟解析
2020/02/29 Python
PyCharm中Matplotlib绘图不能显示UI效果的问题解决
2020/03/12 Python
keras用auc做metrics以及早停实例
2020/07/02 Python
Python高阶函数与装饰器函数的深入讲解
2020/11/10 Python
CSS3动画之利用requestAnimationFrame触发重新播放功能
2019/09/11 HTML / CSS
LINUX下线程,GDI类的解释
2016/12/14 面试题
初中三年毕业生的自我评价分享
2014/02/14 职场文书
班组拓展活动方案
2014/08/14 职场文书
学校党的群众路线教育实践活动对照检查材料
2014/09/24 职场文书
政风行风整改方案
2014/10/25 职场文书
小学优秀教师材料
2014/12/15 职场文书
2015年精神文明建设工作总结
2015/04/21 职场文书
刑事附带民事代理词
2015/05/25 职场文书
预备党员考察表党小组意见
2015/06/01 职场文书
运动会加油稿
2015/07/22 职场文书
2016年区委书记抓基层党建工作公开承诺书
2016/03/25 职场文书
发工资啦!教你用Python实现邮箱自动群发工资条
2021/05/10 Python
mybatis中sql语句CDATA标签的用法说明
2021/06/30 Java/Android
Vue实现跑马灯样式文字横向滚动
2021/11/23 Vue.js