可以用鼠标拖动的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 相关文章推荐
使用jscript实现二进制读写脚本代码
Jun 09 Javascript
jQuery 源码分析笔记(4) Ready函数
Jun 02 Javascript
最佳的addEvent事件绑定是怎样诞生的
Oct 24 Javascript
jQuery语法高亮插件支持各种程序源代码语法着色加亮
Apr 27 Javascript
JavaScript实现班级随机点名小应用需求的具体分析
May 12 Javascript
javascript相关事件的几个概念
May 21 Javascript
javascript实现超炫的向上滑行菜单实例
Aug 03 Javascript
jquery div模态窗口的简单实例
May 28 Javascript
使用 jQuery 实现表单验证功能
Jul 05 jQuery
jsonp跨域获取数据的基础教程
Jul 01 Javascript
VUE预渲染及遇到的坑
Sep 03 Javascript
Vue实现导航栏菜单
Aug 19 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
PHP写入WRITE编码为UTF8的文件的实现代码
2008/07/07 PHP
基于php设计模式中单例模式的应用分析
2013/05/15 PHP
定义php常量的详解
2013/06/09 PHP
php+ajax实现无刷新分页
2015/11/18 PHP
PHP的PDO错误与错误处理
2019/01/27 PHP
Laravel5.1 框架表单验证操作实例详解
2020/01/07 PHP
通过判断JavaScript的版本实现执行不同的代码
2010/05/11 Javascript
js自动生成的元素与页面原有元素发生堆叠的解决方法
2013/10/24 Javascript
解决用jquery load加载页面到div时,不执行页面js的问题
2014/02/22 Javascript
JavaScript中split与join函数的进阶使用技巧
2016/05/03 Javascript
用jQuery实现圆点图片轮播效果
2017/03/19 Javascript
原生JS实现图片无缝滚动方法(附带封装的运动框架)
2017/10/01 Javascript
ligerUI---ListBox(列表框可移动的实例)
2017/11/28 Javascript
JavaScript一元正号运算符示例代码
2019/06/30 Javascript
scrapyd schedule.json setting 传入多个值问题
2019/08/07 Javascript
Vue.js使用axios动态获取response里的data数据操作
2020/09/08 Javascript
解决vue项目运行npm run serve报错的问题
2020/10/26 Javascript
Python入门之三角函数sin()函数实例详解
2017/11/08 Python
Python自定义函数计算给定日期是该年第几天的方法示例
2019/05/30 Python
PyCharm 专业版安装图文教程
2020/02/20 Python
python GUI库图形界面开发之PyQt5时间控件QTimer详细使用方法与实例
2020/02/26 Python
Django数据统计功能count()的使用
2020/11/30 Python
怎样客观的做好自我评价
2013/12/28 职场文书
酒吧创业计划书
2014/01/18 职场文书
致全体运动员广播稿
2014/02/01 职场文书
广告创意求职信
2014/03/17 职场文书
先进事迹报告会主持词
2014/04/02 职场文书
投标服务承诺书
2014/05/28 职场文书
新学期开学标语
2014/06/30 职场文书
董事长助理工作职责范本
2014/07/01 职场文书
聘用合同范本
2015/09/21 职场文书
学校2016年全国助残日活动总结
2016/04/01 职场文书
研究生毕业登记表的自我鉴定范文
2019/07/15 职场文书
解析laravel使用workerman用户交互、服务器交互
2021/04/28 PHP
用python基于appium模块开发一个自动收取能量的小助手
2021/09/25 Python
Javascript中Microtask和Macrotask鲜为人知的知识点
2022/04/02 Javascript