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 相关文章推荐
jQuery MD5加密实现代码
Mar 15 Javascript
JavaScript中把数字转换为字符串的程序代码
Jun 19 Javascript
jQuery 重复加载错误以及修复方法
Dec 16 Javascript
jquery实现超简洁的TAB选项卡效果代码
Aug 28 Javascript
提升jQuery的性能需要做好七件事
Jan 11 Javascript
温习Javascript基础语法之词法结构
May 31 Javascript
jQuery实现公告新闻自动滚屏效果实例代码
Jul 14 Javascript
js 毫秒转天时分秒的实例
Nov 17 Javascript
详解给Vue2路由导航钩子和axios拦截器做个封装
Apr 10 Javascript
jQuery实现动态加载瀑布流
Sep 01 jQuery
swiper自定义分页器的样式
Sep 14 Javascript
javascript函数式编程基础
Sep 15 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
54个提高PHP程序运行效率的方法
2015/07/19 PHP
使用PHP免费发送定时短信的实例
2016/10/24 PHP
Yii2实现中国省市区三级联动实例
2017/02/08 PHP
phpcms配置列表页以及获得文章发布时间
2017/07/04 PHP
Aster vs Newbee BO5 第三场2.19
2021/03/10 DOTA
js给onclick事件赋值,动态传参数实例解说
2013/03/28 Javascript
JS 两个字符串时间的天数差计算
2013/08/25 Javascript
js实现点击后将文字或图片复制到剪贴板的方法
2014/08/04 Javascript
JS绘制生成花瓣效果的方法
2015/08/05 Javascript
JavaScript学习总结之JS、AJAX应用
2016/01/29 Javascript
微信jssdk在iframe页面失效问题的解决措施
2016/03/03 Javascript
深入浅析JavaScript中的scrollTop
2016/07/11 Javascript
jQuery的Read()方法代替原生JS详解
2016/11/08 Javascript
Three.js基础部分学习
2017/01/08 Javascript
常用的js方法合集
2017/03/10 Javascript
微信小程序支付前端源码
2018/08/29 Javascript
element ui 表格动态列显示空白bug 修复方法
2018/09/04 Javascript
jQuery实现可编辑的表格
2019/12/11 jQuery
JS算法教程之字符串去重与字符串反转
2020/12/15 Javascript
[01:24:16]2018DOTA2亚洲邀请赛 4.6 全明星赛
2018/04/10 DOTA
[49:08]FNATIC vs Infamous 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/18 DOTA
Python 正则表达式入门(初级篇)
2016/12/07 Python
Python运维自动化之nginx配置文件对比操作示例
2018/08/29 Python
pyqt5 从本地选择图片 并显示在label上的实例
2019/06/13 Python
pandas DataFrame的修改方法(值、列、索引)
2019/08/02 Python
Python结合Window计划任务监测邮件的示例代码
2020/08/05 Python
详解如何修改python中字典的键和值
2020/09/29 Python
Python Sqlalchemy如何实现select for update
2020/10/12 Python
King Apparel官网:英国街头服饰品牌
2019/09/05 全球购物
高三生物教学反思
2014/01/25 职场文书
2014五一国际劳动节活动总结范文
2014/04/14 职场文书
个人对照检查材料思想汇报(四风问题)
2014/09/25 职场文书
机关职员工作检讨书
2014/10/23 职场文书
2014年人事部工作总结
2014/12/03 职场文书
Python 如何实现文件自动去重
2021/06/02 Python
div与span之间的区别与使用介绍
2021/12/06 HTML / CSS