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

<!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:0;padding:0;list-style:none;}
#div1{ position:absolute;left:0;top:0;width:200px; height:200px; background:red;}

</style>
<script>

window.onload = function(){
     var oDiv = document.getElementById("div1");

     var bLeft = bTop = bRight = bBottom = false;
     var step = 10;
     var bDarg = false;

     var json = {width:oDiv.offsetWidth + "px",height:"200px",left:0,top:0,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 37:
               bLeft = true;
               break;
             case 38:
               bTop = true;
               break;
             case 39:
               bRight = true;
               break;
             case 40:
               bBottom = true;
               break;
         }

         //ctrl + Q   控制是否可以拖拽
         if(oEvent.ctrlKey && keyCode == 81){

             bDarg = !bDarg;
             if(bDarg){
                drag();
             } else {
                noDrag();
             }

         }

         //ctrl + 上 中心点放大
         if(oEvent.ctrlKey && keyCode == 38){
            bTop = false;
            oDiv.style.width = oDiv.offsetWidth + step + "px";
            oDiv.style.height = oDiv.offsetHeight + step + "px";
            oDiv.style.left = oDiv.offsetLeft - step/2 + "px";
            oDiv.style.top = oDiv.offsetTop - step/2 + "px"; 

         }

         //ctrl + 下  中心点缩小
         if(oEvent.ctrlKey && keyCode == 40){
             bBottom = false;
            oDiv.style.width = oDiv.offsetWidth - step + "px";
            oDiv.style.height = oDiv.offsetHeight - step + "px";
            oDiv.style.left = oDiv.offsetLeft + step/2 + "px";
            oDiv.style.top = oDiv.offsetTop + step/2 + "px";
         }

         //ctrl + 回车   还原到左上角
         if(oEvent.ctrlKey && keyCode == 13){
             //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 37:
               bLeft = false;
               break;
             case 38:
               bTop = false;
               break;
             case 39:
               bRight = false;
               break;
             case 40:
               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";
         }

     },30);

     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<0){
                    l=0;
                }else if(l > document.documentElement.clientWidth - oDiv.offsetWidth) {
                    l = document.documentElement.clientWidth - oDiv.offsetWidth;
                }
                if(t<0){
                    t=0;
                } 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>
时间: 2024-10-31 17:24:24

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

页面上有一个div 100*100 颜色为黄色 按键盘上下左右键可以操作div移动 ctrl+键盘上下键可以放大缩小 ctrl+键盘左右键可以随机变颜色

1 <body> 2 <div id="w"> 3 <div class="n">按上键可以向上移动</div> 4 <div class="n">按下键可以向下移动</div> 5 <div class="n">按左键可以向左移动</div> 6 <div class="n">按右键可以向右移动&l

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

avaScript键盘上下左右控制文本框焦点的方法有很多,这里简单说两种方法: 方法一: 创建一个table的dom元素,包含5行4列的文本框 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">      <html>        <head>              <title>keyboard control 1</title>       

07.30《jQuery》——2.2使用键盘上下左右键控制div框

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <style type="text/css"> #bbb { height: 300px; width: 300px; background-color: aliceblue; position: relative; } </style>

Android虚拟键盘上下左右键按下和弹起的响应事件

// 按键按下,所触发的事件 public boolean onKeyDown(int keyCode, KeyEvent event) { switch (keyCode) { case KeyEvent.KEYCODE_DPAD_CENTER: display("中键被按下"); break; case KeyEvent.KEYCODE_DPAD_DOWN: display("下键被按下"); break; case KeyEvent.KEYCODE_DPAD_

Android 自定义的数字键盘 支持随意拖动 和稳定的字符输入的控件

经过 研究 实现了自定义 键盘 ,支持随意拖动 和数字及其他字符输入 下面是主要的代码 和使用方法 import android.content.Context; import android.util.Log; import android.view.GestureDetector; import android.view.GestureDetector.OnGestureListener; import android.view.Gravity; import android.view.Mo

js实现的div拖动效果实例代码

js实现的div拖动效果实例代码:div的拖动效果在很多效果中都有应用,当然还有很多附加的功能,本章节只是给拖动效果,并介绍一下它的实现过程.代码实例如下: <!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <t

键盘各键对应的ASCII码值(包括鼠标和键盘所有的键)

最近收集了一下键盘按键对应的ASCII码: ESC键VK_ESCAPE (27) 回车键:VK_RETURN (13) TAB键:VK_TAB (9) Caps Lock键:VK_CAPITAL (20) Shift键:VK_SHIFT (16) Ctrl键:VK_CONTROL (17) Alt键:VK_MENU (18) 空格键:VK_SPACE (32) 退格键:VK_BACK (8) 左徽标键:VK_LWIN (91) 右徽标键:VK_RWIN (92) 鼠标右键快捷键:VK_APPS

键盘事件-键代码编号

<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>键盘事件全面控制</title> <style type="text/css"> td {text-align:center} </style> <script language=&

解决sqlplus上下左右键和Back Space键乱码不能用问题

在使用Sqlplus的时候,我们会发现想用Back Space删除错误的单词的时候,会发现出现^H乱码,解决的办法有两种: 一: 直接使用Ctrl+Back Space 的组合键就可以删除 二: 在root用户下的.bash_profile文件中加入:stty erase '^H' 再使用 cource .bash_profile 重新生效 在使用Sqlplus的时候,如果想上下翻阅代码而上下左右键不可用的话会让人很头疼. 下面是解决上下左右键不可用的方法: 一:安装readline(readl