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 相关文章推荐
让iframe框架网页在任何浏览器下自动伸缩
Aug 18 Javascript
用javascript实现计算两个日期的间隔天数
Aug 14 Javascript
javascript同步Import,同步调用外部js的方法
Jul 08 Javascript
javascript随机之洗牌算法深入分析
Jun 07 Javascript
自己编写的支持Ajax验证的JS表单验证插件
May 15 Javascript
Underscore.js 1.3.3 中文注释翻译说明
Jun 25 Javascript
以BootStrap Tab为例写一个前端组件
Jul 25 Javascript
JavaScript实现无刷新上传预览图片功能
Aug 02 Javascript
javascript实现智能手环时间显示
Sep 18 Javascript
微信小程序实现锚点跳转
Nov 23 Javascript
JS实现京东商品分类侧边栏
Dec 11 Javascript
微信小程序 接入腾讯地图的两种写法
Jan 12 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
5种PHP创建数组的实例代码分享
2014/01/17 PHP
PHP实现的一致性Hash算法详解【分布式算法】
2018/03/31 PHP
JavaScript 面向对象编程(2) 定义类
2010/05/18 Javascript
javascript同页面多次调用弹出层具体实例代码
2013/08/16 Javascript
js获取事件源及触发该事件的对象
2013/10/24 Javascript
jquery实现图片上传前本地预览
2017/04/28 jQuery
Angular 2.x学习教程之结构指令详解
2017/05/25 Javascript
让微信小程序支持ES6中Promise特性的方法详解
2017/06/13 Javascript
Vue 仿QQ左滑删除组件功能
2018/03/12 Javascript
动态加载、移除js/css文件的示例代码
2018/03/20 Javascript
vue中element-ui表格缩略图悬浮放大功能的实例代码
2018/06/26 Javascript
微信小程序实现自上而下字幕滚动
2018/07/14 Javascript
vue页面引入three.js实现3d动画场景操作
2020/08/10 Javascript
[01:19]2014DOTA2国际邀请赛 采访TITAN战队ohaiyo 能赢DK很幸运
2014/07/12 DOTA
python列表操作使用示例分享
2014/02/21 Python
python中lambda()的用法
2017/11/16 Python
在PyTorch中Tensor的查找和筛选例子
2019/08/18 Python
Python使用贪婪算法解决问题
2019/10/22 Python
python爬虫模拟浏览器访问-User-Agent过程解析
2019/12/28 Python
手动安装python3.6的操作过程详解
2020/01/13 Python
利用Tensorflow的队列多线程读取数据方式
2020/02/05 Python
Python3读写Excel文件(使用xlrd,xlsxwriter,openpyxl3种方式读写实例与优劣)
2020/02/13 Python
canvas需要在标签里直接定义宽高
2014/12/17 HTML / CSS
使用HTML5里的classList操作CSS类
2016/06/28 HTML / CSS
微信html5页面调用第三方位置导航的示例
2018/03/14 HTML / CSS
在校生党员自我评价
2013/09/25 职场文书
公务员总结性个人自我评价
2013/12/05 职场文书
办公室主任职责范本
2014/03/07 职场文书
运动会班级口号
2014/06/09 职场文书
2014年银行工作总结范文
2014/11/12 职场文书
银行求职信范文怎么写
2015/03/20 职场文书
2015年人事科工作总结
2015/04/28 职场文书
入党积极分子党小组意见
2015/06/02 职场文书
在职证明书模板
2015/06/15 职场文书
JavaScript 去重和重复次数统计
2021/03/31 Javascript
JavaScript实现酷炫的鼠标拖尾特效
2022/02/18 Javascript