可以用鼠标拖动的DIV实现思路及代码


Posted in Javascript onOctober 21, 2013
<html><head> 
<title>测试可动div</title> 
<script language='javascript' type='text/javascript'> 
var offset_x; 
var offset_y; 
function Milan_StartMove(oEvent) 
{ 
var whichButton; 
if(document.all&&oEvent.button==1) whichButton=true; 
else { if(oEvent.button==0)whichButton=true;} 
if(whichButton) 
{ 
var oDiv=document.getElementById("oDiv"); 
offset_x=parseInt(oEvent.clientX-oDiv.offsetLeft); 
offset_y=parseInt(oEvent.clientY-oDiv.offsetTop); 
document.documentElement.onmousemove=function(mEvent) 
{ 
var eEvent; 
if(document.all) eEvent=event; 
else{eEvent=mEvent;} 
var oDiv=document.getElementById("oDiv"); 
var x=eEvent.clientX-offset_x; 
var y=eEvent.clientY-offset_y; 
oDiv.style.left=(x)+"px"; 
oDiv.style.top=(y)+"px"; 
} 
} 
} 
function Milan_StopMove(oEvent){document.documentElement.onmousemove=null; } 
</script> 
</head> 
<body> 
<div id="oDiv" onmousedown="Milan_StartMove(event)" onmouseup="Milan_StopMove(event)" style="cursor:move;position:absolute;width:100px;height:60px;border:1px solid 
silver;left:100px;top:100px;z-index:9999;"></div> 
</body></html>

document.all[]是文档中所有标签组成的一个数组变量,包括了文档对象中所有元素;
event.button的值:0没按键 1按左键 2按右键 3按左和右键 4按中间键 5按左和中间键 6按右和中间键 7按所有的键

下面对此代码进行改进,模仿window,并且让它可以盖住select

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<title>测试可动div</title> 
<script language='javascript' type='text/javascript'> 
var offset_x; 
var offset_y; 
function Milan_StartMove(oEvent,div_id) 
{ 
var whichButton; 
if(document.all&&oEvent.button==1) whichButton=true; 
else { if(oEvent.button==0)whichButton=true;} 
if(whichButton) 
{ 
var oDiv=div_id; 
offset_x=parseInt(oEvent.clientX-oDiv.offsetLeft); 
offset_y=parseInt(oEvent.clientY-oDiv.offsetTop); 
document.documentElement.onmousemove=function(mEvent) 
{ 
var eEvent; 
if(document.all) eEvent=event; 
else{eEvent=mEvent;} 
var oDiv=div_id; 
var x=eEvent.clientX-offset_x; 
var y=eEvent.clientY-offset_y; 
oDiv.style.left=(x)+"px"; 
oDiv.style.top=(y)+"px"; 
var d_oDiv=document.getElementById("disable_"+oDiv.id); 
d_oDiv.style.left=(x)+"px"; 
d_oDiv.style.top=(y)+"px"; 
} 
} 
} 
function Milan_StopMove(oEvent){document.documentElement.onmousemove=null; } 
function div_Close(o) 
{var oDiv=o; oDiv.style.display="none";var d_oDiv=document.getElementById("disable_"+o.id);d_oDiv.style.display="none";} 
</script> 
</head> 
<body> 
<div id="oDiv" style="position:absolute;width:100px;height:60px;border:1px solid silver;left:100px;top:100px;z-index:9999;"> 
<div id="move" onmousedown="Milan_StartMove(event,this.parentNode)" onmouseup="Milan_StopMove(event)" 
style="cursor:move;width:100%;height:15px;background-color:#0066cc; font-size:10px;"> 
<div onclick="div_Close(this.parentNode.parentNode)" style="float:right; width:10px; height:100%; cursor:hand; background-color:#cc3333; color:White;font-size:15px;">X</div> 
</div> 
<span>测试一下</span> 
</div> 
<div id="disable_oDiv" style="position:absolute;left:100px;top:100px;width:100px; height:60px; z-index:9998;FILTER:alpha(opacity=50);";> 
<iframe src="about:blank" name="hiddenIframe" width="100%" frameborder="0" height="60px" title="遮盖层"></iframe></div> 
<select name="ListHead1$DropDownList3" id="ListHead1_DropDownList3"> 
<option selected="selected" value=""></option> 
<option value="2">3333</option> 
<option value="6">1111</option> 
<option value="B">222</option> 
</select> 
</body> 
</html>

现在这个可拖动的div是不是好很多了?不用担心select了。之前放出来的只能在IE下正常工作,主要是用了parentElement,现在我把它换成parentNode,调整了CSS样式,这样在FF下也能正常运行了。
Javascript 相关文章推荐
jQuery 1.5最新版本的改进细节分析
Jan 19 Javascript
导航跟随滚动条置顶移动示例代码
Sep 11 Javascript
jQuery拖动div、移动div、弹出层实现原理及示例
Apr 08 Javascript
jquery ztree实现下拉树形框使用到了json数据
May 14 Javascript
用JavaScript显示浏览器客户端信息的超相近教程
Jun 18 Javascript
利用BootStrap弹出二级对话框的简单实现方法
Sep 21 Javascript
js实现非常棒的弹出div
Oct 06 Javascript
angular ngClick阻止冒泡使用默认行为的方法
Nov 03 Javascript
使用 Vue 绑定单个或多个 Class 名的实例代码
Jan 08 Javascript
vue-router中的hash和history两种模式的区别
Jul 17 Javascript
详解Nuxt.js部署及踩过的坑
Aug 07 Javascript
通过实例解析vuejs如何实现调试代码
Jul 16 Javascript
JS中的this变量的使用介绍
Oct 21 #Javascript
JS对select控件option选项的增删改查示例代码
Oct 21 #Javascript
js传参数受特殊字符影响错误的解决方法
Oct 21 #Javascript
使用JavaScript修改浏览器URL地址栏的实现代码
Oct 21 #Javascript
JS操作Cookie写入和读取实例代码
Oct 20 #Javascript
在javaScript中关于submit和button的区别介绍
Oct 20 #Javascript
jQuery实现鼠标移到元素上动态提示消息框效果
Oct 20 #Javascript
You might like
ThinkPHP Mobile使用方法简明教程
2014/06/18 PHP
Laravel框架分页实现方法分析
2018/06/12 PHP
PHP随机数函数rand()与mt_rand()的讲解
2019/03/25 PHP
js获取单元格自定义属性值的代码(IE/Firefox)
2010/04/05 Javascript
根据json字符串生成Html的一种方式
2013/01/09 Javascript
jqplot通过ajax动态画折线图的方法及思路
2013/12/08 Javascript
关于javaScript注册click事件传递参数的不成功问题
2014/07/18 Javascript
如何利用模板将HTML从JavaScript中抽离
2016/10/08 Javascript
移动端脚本框架Hammer.js
2016/12/15 Javascript
JavaScript实现简单图片轮播效果
2017/08/21 Javascript
Angular简单验证功能示例
2017/12/22 Javascript
使用nodejs+express实现简单的文件上传功能
2017/12/27 NodeJs
详解为Bootstrap Modal添加拖拽的方法
2018/01/05 Javascript
如何正确解决VuePress本地访问出现资源报错404的问题
2020/12/03 Vue.js
[03:08]Ti4观战指南上
2014/07/07 DOTA
Python+matplotlib+numpy绘制精美的条形统计图
2018/01/02 Python
python简易远程控制单线程版
2018/06/20 Python
python web框架 django wsgi原理解析
2019/08/20 Python
opencv resize图片为正方形尺寸的实现方法
2019/12/26 Python
Tensorflow tf.dynamic_partition矩阵拆分示例(Python3)
2020/02/07 Python
python 实现socket服务端并发的四种方式
2020/12/14 Python
canvas 下载二维码和图片加水印的方法
2018/03/21 HTML / CSS
使用html2canvas.js实现页面截图并显示或上传的示例代码
2018/12/18 HTML / CSS
大专应届生个人简历的自我评价
2013/10/15 职场文书
工作鉴定评语
2014/05/04 职场文书
社区反邪教工作方案
2014/06/16 职场文书
软件工程毕业生自荐信
2014/07/04 职场文书
群众路线对照检查材料
2014/09/22 职场文书
2014年教育实习工作总结
2014/11/22 职场文书
先进集体事迹材料范文
2014/12/25 职场文书
信贷客户经理岗位职责
2015/04/09 职场文书
CSS3通过var()和calc()函数实现动画特效
2021/03/30 HTML / CSS
如何利用React实现图片识别App
2022/02/18 Javascript
Redis 中使用 list,streams,pub/sub 几种方式实现消息队列的问题
2022/03/16 Redis
win10以太网连接不上怎么办?Win10连接以太网详细教程
2022/04/08 数码科技
Elasticsearch Recovery 详细介绍
2022/04/19 Java/Android