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中的prototype属性实例分析说明
Aug 09 Javascript
jQuery自动切换/点击切换选项卡效果的小例子
Aug 12 Javascript
jquery 合并内容相同的单元格(示例代码)
Dec 13 Javascript
jquery 提示信息显示后自动消失的具体实现
Dec 18 Javascript
JavaScript实现多个重叠层点击切换效果的方法
Apr 24 Javascript
jQuery树形下拉菜单特效代码分享
Aug 15 Javascript
jQuery实现两款有动画功能的导航菜单代码
Sep 16 Javascript
JavaScript File分段上传
Mar 10 Javascript
JavaScript之underscore_动力节点Java学院整理
Jul 03 Javascript
react native 文字轮播的实现示例
Jul 27 Javascript
Vue-cli配置打包文件本地使用的教程图解
Aug 02 Javascript
默认浏览器设置及vue自动打开页面的方法
Sep 21 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 daodb插入、更新与删除数据
2009/03/19 PHP
PHP序列化操作方法分析
2016/09/28 PHP
PHP数据库操作二:memcache用法分析
2017/08/16 PHP
PHP基于pdo的数据库操作类【可支持mysql、sqlserver及oracle】
2018/05/21 PHP
PHP超全局变量实现原理及代码解析
2020/09/01 PHP
菜单效果
2006/10/14 Javascript
jquery控制左右箭头滚动图片列表的实例
2013/05/20 Javascript
仿百度输入框智能提示的js代码
2013/08/22 Javascript
jQuery实现div浮动层跟随页面滚动效果
2014/02/11 Javascript
get(0).tagName获得作用标签示例代码
2014/10/08 Javascript
js计算德州扑克牌面值的方法
2015/03/04 Javascript
javascript实现在线客服效果
2015/07/15 Javascript
微信小程序实现省市区三级地址选择
2020/06/21 Javascript
vue draggable resizable 实现可拖拽缩放的组件功能
2019/07/15 Javascript
js实现漂亮的星空背景
2019/11/01 Javascript
vue elementUI 表单校验的实现代码(多层嵌套)
2019/11/06 Javascript
node使用mysql获取数据库数据中文乱码问题的解决
2019/12/02 Javascript
Python网站验证码识别
2016/01/25 Python
python读写json文件的简单实现
2017/04/11 Python
Django权限机制实现代码详解
2018/02/05 Python
windows环境下tensorflow安装过程详解
2018/03/30 Python
python实现ip代理池功能示例
2019/07/05 Python
使用 Python 写一个简易的抽奖程序
2019/12/08 Python
Pytorch之view及view_as使用详解
2019/12/31 Python
Python如何使用27行代码绘制星星图
2020/07/20 Python
Python中使用aiohttp模拟服务器出现错误问题及解决方法
2020/10/31 Python
YesStyle美国/全球:购买亚洲时装、美容化妆品和生活百货
2017/01/16 全球购物
日本最佳原创设计品牌:Felissimo(芬理希梦)
2019/03/19 全球购物
SQL SERVER面试资料
2013/03/30 面试题
酒店执行总经理岗位职责
2013/12/15 职场文书
高中毕业自我鉴定
2013/12/16 职场文书
《小猫刮胡子》教学反思
2014/02/21 职场文书
生物学专业求职信
2014/07/23 职场文书
纪念九一八事变演讲稿:青少年应树立远大理想
2014/09/14 职场文书
治理商业贿赂工作总结
2015/08/10 职场文书
Nginx防盗链与服务优化配置的全过程
2022/01/18 Servers