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 相关文章推荐
javascript 点击整页变灰的效果(可做退出效果)。
Jan 09 Javascript
jquery ajax 登录验证实现代码
Sep 23 Javascript
Js控制滑轮左右滑动实例
Feb 13 Javascript
JavaScript实现跨浏览器的添加及删除事件绑定函数实例
Aug 04 Javascript
javascript实现简单加载随机色方块
Dec 25 Javascript
JS实现checkbox互斥(单选)功能示例
May 04 Javascript
layui实现数据分页功能
Jul 27 Javascript
微信小程序仿淘宝热搜词在搜索框中轮播功能
Jan 21 Javascript
Vue 中如何将函数作为 props 传递给组件的实现代码
May 12 Javascript
JavaScript forEach中return失效问题解决方案
Jun 01 Javascript
Vue跨域请求问题解决方案过程解析
Aug 07 Javascript
OpenLayers实现图层切换控件
Sep 25 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采集相关教程之一 CURL函数库
2010/02/15 PHP
php while循环得到循环次数
2013/10/26 PHP
从零开始学YII2框架(三)扩展插件yii2-gird
2014/08/20 PHP
smarty模板引擎中自定义函数的方法
2015/01/22 PHP
PHP魔术方法使用方法汇总
2016/02/14 PHP
Yii中CGridView禁止列排序的设置方法
2016/07/12 PHP
Yii2中DropDownList简单用法示例
2016/07/18 PHP
Avengerls vs Newbee BO3 第三场2.18
2021/03/10 DOTA
jQuery中add实现同时选择两个id对象
2010/10/22 Javascript
extjs实现选择多表自定义查询功能 前台部分(ext源码)
2011/12/20 Javascript
捕获键盘事件(且兼容各浏览器)
2013/07/03 Javascript
Node.js开发指南中的简单实例(mysql版)
2013/09/17 Javascript
javascript修改图片src的方法
2015/01/27 Javascript
jQuery实现仿微软首页感应鼠标变化滑动窗口效果
2015/10/08 Javascript
ajax +NodeJS 实现图片上传实例
2017/06/06 NodeJs
JS手机端touch事件计算滑动距离的方法示例
2017/10/26 Javascript
基于vue-resource jsonp跨域问题的解决方法
2018/02/03 Javascript
Vue使用vux-ui自定义表单验证遇到的问题及解决方法
2018/05/10 Javascript
angular2路由之routerLinkActive指令【推荐】
2018/05/30 Javascript
Angular中的ng-template及angular 使用ngTemplateOutlet 指令的方法
2018/08/08 Javascript
用Angular实现一个扫雷的游戏示例
2020/05/15 Javascript
vue iview实现动态新增和删除
2020/06/17 Javascript
python实现在每个独立进程中运行一个函数的方法
2015/04/23 Python
Python基于pygame实现图片代替鼠标移动效果
2015/11/11 Python
python递归查询菜单并转换成json实例
2017/03/27 Python
浅谈Python NLP入门教程
2017/12/25 Python
python爬虫框架scrapy实现模拟登录操作示例
2018/08/02 Python
python print输出延时,让其立刻输出的方法
2019/01/07 Python
pyqt5实现绘制ui,列表窗口,滚动窗口显示图片的方法
2019/06/20 Python
python分数表示方式和写法
2019/06/26 Python
python3爬虫中异步协程的用法
2020/07/10 Python
工厂总经理岗位职责
2014/02/07 职场文书
个人安全承诺书
2014/05/22 职场文书
学生检讨书范文
2014/10/30 职场文书
护理实习生带教计划
2015/01/16 职场文书
2016计划生育先进个人事迹材料
2016/02/29 职场文书