<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta name="author" content="智能社 - zhinengshe.com" />
<meta name="copyright" content="智能社 - zhinengshe.com" />
<title>智能社 - www.zhinengshe.com</title>
<style>
*{margin:;padding:;list-style:none;}
#div1{ position:absolute;left:;top:;width:200px; height:200px; background:red;} </style>
<script> window.onload = function(){
var oDiv = document.getElementById("div1"); var bLeft = bTop = bRight = bBottom = false;
var step = ;
var bDarg = false; var json = {width:oDiv.offsetWidth + "px",height:"200px",left:,top:,background:"red"}; function initDiv(json){
for(var name in json){
oDiv.style[name] = json[name];//?
}
} document.onkeydown = function(ev){
var oEvent = ev || event; var keyCode = oEvent.keyCode; switch(keyCode){
case :
bLeft = true;
break;
case :
bTop = true;
break;
case :
bRight = true;
break;
case :
bBottom = true;
break;
} //ctrl + Q 控制是否可以拖拽
if(oEvent.ctrlKey && keyCode == ){ bDarg = !bDarg;
if(bDarg){
drag();
} else {
noDrag();
} } //ctrl + 上 中心点放大
if(oEvent.ctrlKey && keyCode == ){
bTop = false;
oDiv.style.width = oDiv.offsetWidth + step + "px";
oDiv.style.height = oDiv.offsetHeight + step + "px";
oDiv.style.left = oDiv.offsetLeft - step/ + "px";
oDiv.style.top = oDiv.offsetTop - step/ + "px"; } //ctrl + 下 中心点缩小
if(oEvent.ctrlKey && keyCode == ){
bBottom = false;
oDiv.style.width = oDiv.offsetWidth - step + "px";
oDiv.style.height = oDiv.offsetHeight - step + "px";
oDiv.style.left = oDiv.offsetLeft + step/ + "px";
oDiv.style.top = oDiv.offsetTop + step/ + "px";
} //ctrl + 回车 还原到左上角
if(oEvent.ctrlKey && keyCode == ){
//oDiv.style.cssText = " position:absolute;left:0;top:0;width:200px; height:200px; background:red;"; initDiv(json);
} }; document.onkeyup = function(ev){
var oEvent = ev || event; var keyCode = oEvent.keyCode; switch(keyCode){
case :
bLeft = false;
break;
case :
bTop = false;
break;
case :
bRight = false;
break;
case :
bBottom = false;
break;
}
}; setInterval(function(){
if(bLeft){
oDiv.style.left = oDiv.offsetLeft - step + "px";
}
if(bTop){
oDiv.style.top = oDiv.offsetTop - step + "px";
}
if(bRight){
oDiv.style.left = oDiv.offsetLeft + step + "px";
}
if(bBottom){
oDiv.style.top = oDiv.offsetTop + step + "px";
} },); function noDrag(){
oDiv.onmousedown = null;
} function drag(){
oDiv.onmousedown = function(ev){ var oEvent = ev || event;
var disX = oEvent.clientX - oDiv.offsetLeft;
var disY = oEvent.clientY - oDiv.offsetTop; document.onmousemove = function(ev){
var oEvent = ev || event;
var l=oEvent.clientX-disX;
var t=oEvent.clientY-disY;
if(l<){
l=;
}else if(l > document.documentElement.clientWidth - oDiv.offsetWidth) {
l = document.documentElement.clientWidth - oDiv.offsetWidth;
}
if(t<){
t=;
} else if(t > document.documentElement.clientHeight - oDiv.offsetHeight) {
t = document.documentElement.clientHeight - oDiv.offsetHeight;
}
oDiv.style.left = l + "px";
oDiv.style.top = t + "px";
}; document.onmouseup = function(){
document.onmousemove = null;
document.onmouseup = null; oDiv.releaseCapture && oDiv.releaseCapture(); //释放捕获
};
//捕获 解决IE浏览器下拖拽图片的bug,即图片拖拽过程中不跟随鼠标移动直接到达鼠标目标点
oDiv.setCapture && oDiv.setCapture();
return false;
};
} }; </script>
</head> <body>
<div id="div1"></div>
</body>
</html>

自定义div 拖动。键盘上下左右键移动,ctrl+Q控制是否可以移动,ctrl+回车,返回初始状态的更多相关文章

  1. JS控制文本框内键盘上下左右键的焦点

    avaScript键盘上下左右控制文本框焦点的方法有很多,这里简单说两种方法: 方法一: 创建一个table的dom元素,包含5行4列的文本框 <!DOCTYPE HTML PUBLIC &qu ...

  2. 通过键盘上下键 JS事件,控制候选词的选择项

    效果图 JS代码 //上下键 选择事件 searchBackgroud 为样式,只做标记,无实质样式,因为和其他样式不兼容,只能添加CSS $(document).keydown(function ( ...

  3. jquery实现输入框聚焦,键盘上下键选择城市

    在最近有个项目中 需要实现当文本框聚焦的时候,可以键盘上下键选择内容,按enter键的时候,把内容传到输入框中,如图所示: 实现代码如下: /** *输入框聚焦,键盘上下键选择城市 */ ;(func ...

  4. 键盘虚拟键值编码表 使用keybd_Event

    键盘虚拟键值编码表 使用keybd_Event 模拟键盘输入首先要用到一个API函数:keybd_event. 我们是菜鸟,所以不必具体去理解它的详细用法,只要按以下方法使用即可了!呵呵! 模拟按键有 ...

  5. KeyboardJS 开发指南 - 与 Three.js 配合使用的捕捉键盘组合键库

    KeyboardJS 开发指南 - 与 Three.js 配合使用的捕捉键盘组合键库 太阳火神的漂亮人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非 ...

  6. js js键盘各键对应的代码 ---转

    0x1 鼠标左键\r 0x2 鼠标右键\r 0x3 CANCEL 键\r 0x4 鼠标中键\r 0x8 BACKSPACE 键\r 0x9 TAB 键\r 0xC CLEAR 键\r 0xD ENTE ...

  7. 键盘各键对应的编码值(key code)

    原文:键盘各键对应的编码值(key code) 来源:http://www.cambiaresearch.com/articles/15/javascript-char-codes-key-codes ...

  8. 让一个div拖动和让一个panel拖动加拉大拉小

    一.让一个div拖动 <!doctype html> <html xmlns="http://www.w3.org/1999/xhtml"> <hea ...

  9. 在tmux中的vi 上下左右键变为了ABCD等字符

    在本机上用vim编辑时,上下左右键没有问题,但是在tmux中确出现ABCD等字符. 原因是在tmux这个终端,默认做了字符转换,网上搜了很多答案,解决问题的设置是: set term=xterm

随机推荐

  1. Python3基础 list reversed 列表逆转并输出

             Python : 3.7.0          OS : Ubuntu 18.04.1 LTS         IDE : PyCharm 2018.2.4       Conda ...

  2. Python3基础 逻辑运算 and or not 示例

             Python : 3.7.0          OS : Ubuntu 18.04.1 LTS         IDE : PyCharm 2018.2.4       Conda ...

  3. git如何列出分支之间的差异commit

    答:使用git log master..diff_master 这样就可以列出在diff_master分支中包含的commit而在master分支中不包含的commit

  4. windows下的 gvim - su'blime text 的使用

    su'blime [s2'blaim] adj. n. 崇高的, 高尚的, 令人尊敬的; 壮丽的, 宏伟的; 出众的; 崇高的人, 壮丽的事物等等. a sublime mission. a subl ...

  5. 51nod 1202 子序列个数

    1202 子序列个数  题目来源: 福州大学 OJ 基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题  收藏  关注 子序列的定义:对于一个序列a=a[1],a[2] ...

  6. BZOJ4415: [Shoi2013]发牌 树状数组+二分

    Description 假设一开始,荷官拿出了一副新牌,这副牌有N张不同的牌,编号依次为1到N.由于是新牌,所以牌是按照顺序排好的,从牌库顶开始,依次为1, 2,……直到N,N号牌在牌库底.为了发完所 ...

  7. [Pytorch]Pytorch中tensor常用语法

    原文地址:https://zhuanlan.zhihu.com/p/31494491 上次我总结了在PyTorch中建立随机数Tensor的多种方法的区别. 这次我把常用的Tensor的数学运算总结到 ...

  8. Ubuntu 14.04 编写service 服务

    有时我们需要将特定操作封装成服务,通过服务启动停止,例如nginx的启动停止,service nginx start 或者service nginx stop 下面我们将编写一个demo cd /et ...

  9. 如何学好Java大数据并快速提升

    Java作为一种最流行的,最热门的编程语言,可以说它无处不在,目前全球有着数十亿的设备正在运行着Java,很多服务器程序都是用Java编写,用以处理每天超过数以千万的数据.无论是手机软件.手机Java ...

  10. Codeforces 847I - Noise Level

    847I - Noise Level 思路:bfs. 代码: #include<bits/stdc++.h> using namespace std; #define ll long lo ...