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 相关文章推荐
动态控制Table的js代码
Mar 07 Javascript
jQuery autocomplate 自扩展插件、自动完成示例代码
Mar 28 Javascript
jQuery使用数组编写图片无缝向左滚动
Dec 11 Javascript
js导出table到excel同时兼容FF和IE示例
Sep 03 Javascript
基于javascript实现随机颜色变化效果
Jan 14 Javascript
深入理解JavaScript中为什么string可以拥有方法
May 24 Javascript
Bootstrap提示框效果的实例代码
Jul 12 Javascript
js基于FileSaver.js 浏览器导出Excel文件的示例
Aug 15 Javascript
微信小程序 上传头像的实例详解
Oct 27 Javascript
利用Decorator如何控制Koa路由详解
Jun 26 Javascript
详解一个基于套接字实现长连接的express
Mar 28 Javascript
vue route新窗口跳转页面并且携带与接收参数
Apr 10 Vue.js
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
无线电波是什么?它是怎样传输的?
2021/03/01 无线电
php中突破基于HTTP_REFERER的防盗链措施(stream_context_create)
2011/03/29 PHP
PHP中使用smarty生成静态文件的例子
2014/04/24 PHP
Apache服务器下防止图片盗链的办法
2015/07/06 PHP
PHP编程文件处理类SplFileObject和SplFileInfo用法实例分析
2017/07/22 PHP
php 广告点击统计代码(php+mysql)
2018/02/21 PHP
静态页面的值传递(三部曲)
2006/09/25 Javascript
event.keyCode键码值表 附只能输入特定的字符串代码
2009/05/15 Javascript
一些常用的JS功能函数(2009-06-04更新)
2009/06/04 Javascript
javascript时间自动刷新实现原理与步骤
2013/01/06 Javascript
jQuery 淡入淡出 png图在ie8下有黑色边框的解决方法
2013/03/05 Javascript
jquery及原生js获取select下拉框选中的值示例
2013/10/25 Javascript
js与C#进行时间戳转换
2014/11/14 Javascript
不到30行JS代码实现Excel表格的方法
2014/11/15 Javascript
javascript使用闭包模拟对象的私有属性和方法
2016/10/05 Javascript
用自定义图片代替原生checkbox实现全选,删除以及提交的方法
2016/10/18 Javascript
JavaScript队列函数和异步执行详解
2017/06/19 Javascript
JS判断Android、iOS或浏览器的多种方法(四种方法)
2017/06/29 Javascript
让Python代码更快运行的5种方法
2015/06/21 Python
Python 实现异步调用函数的示例讲解
2018/10/14 Python
解决Django中多条件查询的问题
2019/07/18 Python
python3.6 tkinter实现屏保小程序
2019/07/30 Python
解决Pytorch 加载训练好的模型 遇到的error问题
2020/01/10 Python
Python selenium 加载并保存QQ群成员,去除其群主、管理员信息的示例代码
2020/05/28 Python
深入了解python列表(LIST)
2020/06/08 Python
用Python 爬取猫眼电影数据分析《无名之辈》
2020/07/24 Python
Python基于staticmethod装饰器标示静态方法
2020/10/17 Python
python 模拟登陆163邮箱
2020/12/15 Python
柒牌官方商城:中国男装优秀品牌
2017/06/30 全球购物
最新茶叶店创业计划书
2014/01/14 职场文书
大学生怎样写好自荐信
2014/02/25 职场文书
公共场所卫生管理制度
2015/08/05 职场文书
小学秋季运动会通讯稿
2015/11/25 职场文书
优质服务标语口号
2015/12/26 职场文书
html5调用摄像头实例代码
2021/06/28 HTML / CSS
SQL Server数据库查询出现阻塞之性能调优
2022/04/10 SQL Server