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中对服务器控件 DropdownList, RadioButtonList, CheckboxList的操作总结
Jun 28 Javascript
JS实现下拉框的动态添加(附效果)
Apr 03 Javascript
JavaScript获取伪元素(Pseudo-Element)属性的方法技巧
Mar 13 Javascript
如何使用HTML5地理位置定位功能
Apr 27 Javascript
JavaScript实现页面定时刷新(定时器,meta)
Oct 12 Javascript
微信小程序开发之实现选项卡(窗口顶部TabBar)页面切换
Nov 25 Javascript
javascript和jQuery中的AJAX技术详解【包含AJAX各种跨域技术】
Dec 15 Javascript
微信小程序 二维码canvas绘制实例详解
Jan 06 Javascript
Angular使用$http.jsonp发送跨站请求的方法
Mar 16 Javascript
微信小程序 判断手机号的实现代码
Apr 19 Javascript
Bootstrap Table使用整理(一)
Jun 09 Javascript
Vue 与 Vuex 的第一次接触遇到的坑
Aug 16 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之数据库操作详解及乱码解决!
2007/01/02 PHP
分享PHP入门的学习方法
2007/01/02 PHP
php的sso单点登录实现方法
2015/01/08 PHP
php实现倒计时效果
2015/12/19 PHP
简单了解WordPress开发中update_option()函数的用法
2016/01/11 PHP
Yii2框架自定义验证规则操作示例
2019/02/08 PHP
mongodb和php的用法详解
2019/03/25 PHP
PHP+redis实现微博的推模型案例分析
2019/07/10 PHP
jQuery 使用手册(六)
2009/09/23 Javascript
Bootstrap源码解读媒体对象、列表组和面板(10)
2016/12/26 Javascript
nodejs个人博客开发第四步 数据模型
2017/04/12 NodeJs
利用jQuery实现简单的拖曳效果实例代码
2017/10/20 jQuery
详解如何配置vue-cli3.0的vue.config.js
2018/08/23 Javascript
基于vue中的scoped坑点解说
2020/09/04 Javascript
vuejs实现下拉框菜单选择
2020/10/23 Javascript
Node使用koa2实现一个简单JWT鉴权的方法
2021/01/26 Javascript
[42:11]TNC vs Pain 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
[42:32]完美世界DOTA2联赛循环赛 Magma vs PXG BO2第二场 10.28
2020/10/28 DOTA
Python 描述符(Descriptor)入门
2016/11/20 Python
最近Python有点火? 给你7个学习它的理由!
2017/06/26 Python
Python_LDA实现方法详解
2017/10/25 Python
浅谈python之高阶函数和匿名函数
2019/03/21 Python
Python实现RabbitMQ6种消息模型的示例代码
2020/03/30 Python
Pytorch数据拼接与拆分操作实现图解
2020/04/30 Python
Python代码中如何读取键盘录入的值
2020/05/27 Python
英国领先的在线旅游和休闲零售商:lastminute.com
2019/01/23 全球购物
LORAC官网:美国彩妆品牌
2019/08/27 全球购物
C#公司笔试题
2014/03/28 面试题
教师演讲稿大全
2014/05/16 职场文书
雷人标语集锦
2014/06/19 职场文书
2015年世界卫生日活动总结
2015/02/09 职场文书
投资合作意向书范本
2015/05/08 职场文书
2015年秋季小学开学典礼主持词
2015/07/16 职场文书
导游词之苏州阳澄湖
2019/11/15 职场文书
「我的青春恋爱物语果然有问题。-妄言录-」第20卷封面公开
2022/03/21 日漫
使用Apache Camel表达REST服务的方法
2022/06/10 Servers