可以用鼠标拖动的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 相关文章推荐
js 第二代身份证号码的验证机制代码
May 12 Javascript
nodeType属性返回被选节点的节点类型介绍
Nov 22 Javascript
js实现编辑div节点名称的方法
Dec 17 Javascript
Javascript设计模式之观察者模式(推荐)
Mar 29 Javascript
AngularJS 与百度地图的结合实例
Oct 20 Javascript
基于jQuery实现滚动刷新效果
Jan 09 Javascript
JavaScript你不知道的一些数组方法
Aug 18 Javascript
laydate日历控件使用方法详解
Nov 20 Javascript
Vue 开发音乐播放器之歌手页右侧快速入口功能
Aug 08 Javascript
解决ele ui 表格表头太长问题的实现
Nov 13 Javascript
VUEX-action可以修改state吗
Nov 19 Javascript
Vue.js暴露方法给WebView的使用操作
Sep 07 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
环境会对咖啡种植有什么影响
2021/03/03 咖啡文化
fleaphp crud操作之find函数的使用方法
2011/04/23 PHP
如何用C语言编写PHP扩展的详解
2013/06/13 PHP
php实现分页工具类分享
2014/01/09 PHP
PHP图像识别技术原理与实现
2016/10/27 PHP
thinkphp5框架前后端分离项目实现分页功能的方法分析
2019/10/08 PHP
JavaScript-世界上误解最深的语言分析
2007/08/12 Javascript
纯JAVASCRIPT图表动画插件Highcharts Examples
2011/04/16 Javascript
JSON为什么那样红为什么要用json(另有洞天)
2012/12/26 Javascript
Extjs单独定义各组件的实例代码
2013/06/25 Javascript
javaScript NameSpace 简单说明介绍
2013/07/18 Javascript
js中创建对象的几种方式示例介绍
2014/01/26 Javascript
js实现弹出窗口、页面变成灰色并不可操作的例子分享
2014/05/10 Javascript
JS生成不重复随机数组的函数代码
2014/06/10 Javascript
JavaScript eval() 函数介绍及应用示例
2014/07/29 Javascript
Bootstrap3制作搜索框样式的方法
2016/07/11 Javascript
微信小程序购物商城系统开发系列-工具篇的介绍
2016/11/21 Javascript
JavaScript设计模式之代理模式详解
2017/06/09 Javascript
elemetUi 组件--el-upload实现上传Excel文件的实例
2017/10/27 Javascript
Vue最新防抖方案(必看篇)
2019/10/30 Javascript
JavaScript canvas基于数组生成柱状图代码实例
2020/03/06 Javascript
vue切换菜单取消未完成接口请求的案例
2020/11/13 Javascript
python文件操作之目录遍历实例分析
2015/05/20 Python
详解Python中 __get__和__getattr__和__getattribute__的区别
2016/06/16 Python
python3实现名片管理系统
2020/11/29 Python
Python使用plt.boxplot() 参数绘制箱线图
2020/06/04 Python
关于前端上传文件全面基础扫盲贴(入门)
2019/08/01 HTML / CSS
linux面试题参考答案(11)
2016/11/26 面试题
就业推荐自我鉴定
2013/10/06 职场文书
安全检查管理制度
2014/02/02 职场文书
2014年综治宣传月活动总结
2014/04/28 职场文书
集团财务总监岗位职责
2015/04/03 职场文书
2015大学迎新晚会策划书
2015/07/16 职场文书
无故旷工检讨书
2015/08/15 职场文书
Python深度学习之Pytorch初步使用
2021/05/20 Python
MyBatis在注解上使用动态SQL方式(@select使用if)
2022/07/07 Java/Android