可以用鼠标拖动的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 相关文章推荐
html向js方法传递参数具体实现
Aug 08 Javascript
禁止拷贝网页内容的js代码
Jan 22 Javascript
完美兼容各大浏览器获取HTTP_REFERER方法总结
Jun 24 Javascript
解决jquery版本冲突的有效方法
Sep 02 Javascript
AJAX实现瀑布流触发分页与分页触发瀑布流的方法
May 23 Javascript
微信小程序(三):网络请求
Jan 13 Javascript
使用JavaScript实现表格编辑器(实例讲解)
Aug 02 Javascript
详解组件库的webpack构建速度优化
Jun 18 Javascript
解决betterScroll在vue中存在图片时,出现拉不动的问题
Sep 27 Javascript
vue 属性拦截实现双向绑定的实例代码
Oct 24 Javascript
JS定义函数的几种常用方法小结
May 23 Javascript
在vue中使用防抖函数组件操作
Jul 26 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中使用Oracle数据库(4)
2006/10/09 PHP
PHP 页面跳转到另一个页面的多种方法方法总结
2009/07/07 PHP
PHP判断远程图片或文件是否存在的实现代码
2014/02/20 PHP
PHP检测链接是否存在的代码实例分享
2016/05/06 PHP
PHP7匿名类的用法示例
2019/04/05 PHP
PHP面向对象程序设计之对象的遍历操作示例
2019/06/12 PHP
PHP的cookie与session原理及用法详解
2019/09/27 PHP
javascript 字符串连接的性能问题(多浏览器)
2008/11/18 Javascript
JS获取html对象的几种方式介绍
2013/12/05 Javascript
JS常用字符串处理方法应用总结
2014/05/22 Javascript
jQuery功能函数详解
2015/02/01 Javascript
angularJS提交表单(form)
2015/02/09 Javascript
JavaScript更改原始对象valueOf的方法
2015/03/19 Javascript
javascript中SetInterval与setTimeout的定时器用法
2015/08/24 Javascript
jQuery+Ajax+PHP弹出层异步登录效果(附源码下载)
2016/05/27 Javascript
ionic2 tabs使用 Modal底部tab弹出框
2016/12/30 Javascript
js实现百度搜索提示框
2017/02/05 Javascript
微信小程序教程系列之新建页面(4)
2017/04/17 Javascript
Electron-vue脚手架改造vue项目的方法
2018/10/22 Javascript
微信小程序功能之全屏滚动效果的实现代码
2018/11/22 Javascript
vue中在vuex的actions中请求数据实例
2019/11/08 Javascript
Python科学计算环境推荐——Anaconda
2014/06/30 Python
Python中的__new__与__init__魔术方法理解笔记
2014/11/08 Python
python处理multipart/form-data的请求方法
2018/12/26 Python
python numpy实现文件存取的示例代码
2019/05/26 Python
Django RBAC权限管理设计过程详解
2019/08/06 Python
浅析python实现动态规划背包问题
2020/12/31 Python
CSS3实现红包抖动效果
2020/12/23 HTML / CSS
King Apparel官网:英国街头服饰品牌
2019/09/05 全球购物
小学生评语集锦
2014/04/18 职场文书
美容院合作经营协议书
2014/10/10 职场文书
大学生个人简历自我评价
2015/03/11 职场文书
讲座开场白台词和结束语
2015/05/29 职场文书
围城读书笔记
2015/06/26 职场文书
毕业设计工作总结
2015/08/14 职场文书
PyCharm 安装与使用配置教程(windows,mac通用)
2021/05/12 Python