可以用鼠标拖动的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 相关文章推荐
cssQuery()的下载与使用方法
Jan 12 Javascript
关于递归运算的顺序测试代码
Nov 30 Javascript
jQuery contains过滤器实现精确匹配使用方法
Apr 12 Javascript
javascript dom追加内容实现示例
Sep 21 Javascript
网站繁简切换的JS遇到页面卡死的解决方法
Mar 12 Javascript
js实现仿MSN带关闭功能的右下角弹窗代码
Sep 04 Javascript
微信小程序 触控事件详细介绍
Oct 17 Javascript
js canvas实现QQ拨打电话特效
May 10 Javascript
Vue2.x中利用@font-size引入字体图标报错的解决方法
Sep 28 Javascript
JavaScript基础之静态方法和实例方法分析
Dec 26 Javascript
微信小程序实现点击卡片 翻转效果
Sep 04 Javascript
react的hooks的用法详解
Oct 12 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
神族 PROTOSS 概述
2020/03/14 星际争霸
使用Linux五年积累的一些经验技巧
2013/06/20 PHP
使用php判断服务器是否支持Gzip压缩功能
2013/09/24 PHP
phpstrom使用xdebug配置方法
2013/12/17 PHP
thinkphp框架下实现登录、注册、找回密码功能
2016/04/06 PHP
PHP标准库(PHP SPL)详解
2019/03/16 PHP
javascript生成/解析dom的CDATA类型的字段的代码
2007/04/22 Javascript
浅谈js中变量初始化
2015/02/03 Javascript
jQuery插件实现大图全屏图片相册
2015/03/14 Javascript
jquery判断密码强度的验证代码
2020/04/22 Javascript
JavaScript+html5 canvas绘制的圆弧荡秋千效果完整实例
2016/01/26 Javascript
总结Javascript中数组各种去重的方法
2016/10/04 Javascript
jQuery焦点图轮播效果实现方法
2016/12/19 Javascript
javascript 闭包详解及简单实例应用
2016/12/31 Javascript
Django与Vue语法的冲突问题完美解决方法
2017/12/14 Javascript
Vue实现购物车详情页面的方法
2019/08/20 Javascript
vue cli3 配置proxy代理无效的解决
2019/10/30 Javascript
详解ES6数组方法find()、findIndex()的总结
2020/05/12 Javascript
JavaScript Html实现移动端红包雨功能页面
2021/01/10 Javascript
[03:48]2014DOTA2 TI专访71DK夺冠不靠小组赛高排名
2014/07/11 DOTA
Python高级用法总结
2018/05/26 Python
python中多层嵌套列表的拆分方法
2018/07/02 Python
python七夕浪漫表白源码
2019/04/05 Python
Python实现的对一个数进行因式分解操作示例
2019/06/27 Python
使用Pyinstaller转换.py文件为.exe可执行程序过程详解
2019/08/06 Python
基于html5 DeviceOrientation 实现微信摇一摇功能
2015/09/25 HTML / CSS
什么是数据库锁?Oracle中都有哪些类型的锁?
2015/08/21 面试题
教师党的群众路线教育实践活动个人整改措施
2014/11/04 职场文书
小学班主任自我评价
2015/03/11 职场文书
车间质检员岗位职责
2015/04/08 职场文书
2015年营业员工作总结
2015/04/23 职场文书
社区文明倡议书
2015/04/28 职场文书
《穷人》教学反思
2016/02/19 职场文书
《莫泊桑拜师》教学反思
2016/02/22 职场文书
高一英语教学反思
2016/03/03 职场文书
2019大学生预备党员转正思想汇报
2019/06/21 职场文书