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或css文件后面跟参数的原因说明
Jan 09 Javascript
alert中断settimeout计时功能
Jul 26 Javascript
jQuery模拟物体自由落体运动(附演示与demo源码下载)
Jan 21 Javascript
React.js入门学习第一篇
Mar 30 Javascript
关于JS中二维数组的声明方法
Sep 24 Javascript
Bootstrap面板使用方法
Jan 16 Javascript
JavaScript数组的5种迭代方法
Sep 29 Javascript
Vue页面骨架屏的实现方法
May 22 Javascript
微信小程序 调用微信授权窗口相关问题解决
Jul 25 Javascript
JavaScript如何借用构造函数继承
Nov 06 Javascript
vue.js实现点击图标放大离开时缩小的代码
Jan 27 Vue.js
基于JavaScript实现简单的轮播图
Mar 03 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
第十三节--对象串行化
2006/11/16 PHP
PHP写杨辉三角实例代码
2011/07/17 PHP
编译php 5.2.14+fpm+memcached(具体操作详解)
2013/06/18 PHP
PHP中使用GD库创建圆形饼图的例子
2014/11/19 PHP
typecho插件编写教程(一):Hello World
2015/05/28 PHP
phpmailer简单发送邮件的方法(附phpmailer源码下载)
2016/06/13 PHP
php中遍历二维数组并以表格的形式输出的方法
2017/01/03 PHP
PHP树形结构tree类用法示例
2019/02/01 PHP
JavaScript中Math对象使用说明
2008/01/16 Javascript
JavaScript事件处理器中的event参数使用介绍
2013/05/24 Javascript
详解JavaScript ES6中的模板字符串
2015/07/28 Javascript
JavaScript是如何实现继承的(六种方式)
2016/03/31 Javascript
JS传值出现中文参数乱码的解决方法
2016/06/30 Javascript
使用jquery/js获取iframe父子级、同级获取元素的方法
2016/08/05 Javascript
bootstrap多种样式进度条展示
2016/12/20 Javascript
js实现3d悬浮效果
2017/02/16 Javascript
Vue.js tab实现选项卡切换
2017/05/16 Javascript
layer弹出的iframe层在执行完毕后关闭当前弹出层的方法
2018/08/17 Javascript
JavaScript 判断iPhone X Series机型的方法
2019/01/28 Javascript
使用 node.js 模仿 Apache 小部分功能
2019/07/07 Javascript
windows下create-react-app 升级至3.3.1版本踩坑记
2020/02/17 Javascript
vue中实现图片压缩 file文件的方法
2020/05/28 Javascript
vue动态设置页面title的方法实例
2020/08/23 Javascript
Python连接mysql数据库的正确姿势
2016/02/03 Python
举例讲解Python中字典的合并值相加与异或对比
2016/06/04 Python
Kears 使用:通过回调函数保存最佳准确率下的模型操作
2020/06/17 Python
详解三种方式实现平滑滚动页面到顶部的功能
2019/04/23 HTML / CSS
法国时尚童装网站:Melijoe
2016/08/10 全球购物
UGG澳洲官网:UGG Australia
2018/04/26 全球购物
几个Linux面试题笔试题
2012/12/01 面试题
清洁工岗位职责
2014/01/29 职场文书
法院反腐倡廉心得体会
2014/09/09 职场文书
乡镇党委书记个人整改措施
2014/09/15 职场文书
建国大业观后感600字
2015/06/01 职场文书
《秋天的图画》教学反思
2016/02/19 职场文书
医生行业员工的辞职信
2019/06/24 职场文书