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获取多个tagname的节点数组
Sep 22 Javascript
让table变成exls的示例代码
Mar 24 Javascript
JavaScript中Date.toSource()方法的使用教程
Jun 12 Javascript
jQuery Ajax使用FormData对象上传文件的方法
Sep 07 Javascript
原生JS改变透明度实现轮播效果
Mar 24 Javascript
JavaScript输入框字数实时统计更新
Jun 17 Javascript
详解微信小程序Page中data数据操作和函数调用
Sep 27 Javascript
Vue商品控件与购物车联动效果的实例代码
Jul 21 Javascript
如何对react hooks进行单元测试的方法
Aug 14 Javascript
layui-tree实现Ajax异步请求后动态添加节点的方法
Sep 23 Javascript
ES6 class类链式继承,实例化及react super(props)原理详解
Feb 15 Javascript
node.js文件的复制、创建文件夹等相关操作
Feb 05 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版
2012/04/20 PHP
php循环创建目录示例分享(php创建多级目录)
2014/03/04 PHP
php封装的图片(缩略图)处理类完整实例
2016/10/19 PHP
php检测mysql表是否存在的方法小结
2017/07/20 PHP
jquery 注意事项与常用语法小结
2010/06/07 Javascript
jQuery中[attribute]选择器用法实例
2014/12/31 Javascript
jQuery实现表格展开与折叠的方法
2015/05/04 Javascript
JavaScript高级程序设计(第三版)学习笔记6、7章
2016/03/11 Javascript
Backbone中View之间传值的学习心得
2016/08/09 Javascript
详解jQuery中的事件
2016/12/14 Javascript
Vue.js中轻松解决v-for执行出错的三个方案
2017/06/09 Javascript
Angular4学习笔记之新建项目的方法
2017/07/18 Javascript
Vee-Validate的使用方法详解
2017/09/22 Javascript
js构造函数创建对象是否加new问题
2018/01/22 Javascript
JS实现数组深拷贝的方法分析
2019/03/06 Javascript
JavaScript回调函数callback用法解析
2020/01/14 Javascript
使用typescript改造koa开发框架的实现
2020/02/04 Javascript
Vue路由守卫及页面登录权限控制的设置方法(两种)
2020/03/31 Javascript
[44:15]国士无双DOTA2 6.82版本详解(上)
2014/09/28 DOTA
python高并发异步服务器核心库forkcore使用方法
2013/11/26 Python
Python random模块(获取随机数)常用方法和使用例子
2014/05/13 Python
Python的Bottle框架中返回静态文件和JSON对象的方法
2015/04/30 Python
python实现类之间的方法互相调用
2018/04/29 Python
用python脚本24小时刷浏览器的访问量方法
2018/12/07 Python
PyCharm 设置SciView工具窗口的方法
2019/01/15 Python
给Python学习者的文件读写指南(含基础与进阶)
2020/01/29 Python
详解Python遍历列表时删除元素的正确做法
2021/01/07 Python
Python3 + Appium + 安卓模拟器实现APP自动化测试并生成测试报告
2021/01/27 Python
中国跨境电商:Tomtop
2017/03/16 全球购物
俄罗斯宠物用品网上商店:ZooMag
2019/12/12 全球购物
施华洛世奇新加坡官网:SWAROVSKI新加坡
2020/10/06 全球购物
linux比较文件内容的命令是什么
2013/03/04 面试题
农业大学毕业生的个人自我评价
2013/10/11 职场文书
会计学自荐信
2014/06/03 职场文书
《活见鬼》教学反思
2016/02/24 职场文书
十大必看国产动漫排名,魁拔上线,第二曾在日本播出
2022/03/18 国漫