可以用鼠标拖动的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 相关文章推荐
点图片上一页下一页翻页效果
Jul 09 Javascript
读jQuery之十二 删除事件核心方法
Jul 31 Javascript
Javascript图像处理—平滑处理实现原理
Dec 28 Javascript
开发 Internet Explorer 右键功能表(ContextMenu)
Jul 03 Javascript
原生js操作checkbox用document.getElementById实现
Oct 12 Javascript
jquery 鼠标滑动显示详情应用示例
Jan 24 Javascript
DOM基础教程之事件类型
Jan 20 Javascript
js实现点击左右按钮轮播图片效果实例
Jan 29 Javascript
JS实现新浪微博效果带遮罩层的弹出框代码
Oct 12 Javascript
JS传递对象数组为参数给后端,后端获取的实例代码
Jun 28 Javascript
Vue 实现拖动滑块验证功能(只有css+js没有后台验证步骤)
Aug 24 Javascript
微信小程序中如何计算距离某个节日还有多少天
Jul 15 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中的加密功能
2006/10/09 PHP
PHP运行出现Notice : Use of undefined constant 的完美解决方案分享
2012/03/05 PHP
IIS6.0 开启Gzip方法及PHP Gzip函数分享
2014/06/08 PHP
Laravel SQL语句记录方式(推荐)
2016/05/26 PHP
php获取一定范围内取N个不重复的随机数
2016/05/28 PHP
Linux系统中为php添加pcntl扩展
2016/08/28 PHP
PHP批量删除jQuery操作
2017/07/23 PHP
关于php开启错误提示的总结
2019/09/24 PHP
js操作Xml(向服务器发送Xml,处理服务器返回的Xml)(IE下有效)
2009/01/30 Javascript
jquery imgareaselect 使用利用js与程序结合实现图片剪切
2009/07/30 Javascript
JS无限树状列表实现代码
2011/01/11 Javascript
javascript实现上传图片并预览的效果实现代码
2011/04/11 Javascript
PHP+jQuery实现随意拖动层并即时保存拖动位置
2015/04/30 Javascript
JSON格式的时间/Date(2367828670431)/格式转为正常的年-月-日 格式的代码
2016/07/27 Javascript
js制作可以延时消失的菜单
2017/01/13 Javascript
jquery PrintArea 实现票据的套打功能(代码)
2017/03/17 Javascript
Require.js的基本用法详解
2017/07/03 Javascript
使用 jQuery 实现表单验证功能
2017/07/05 jQuery
vuex学习之Actions的用法详解
2017/08/29 Javascript
JS设计模式之数据访问对象模式的实例讲解
2017/09/30 Javascript
深入浅析var,let,const的异同点
2018/08/07 Javascript
AngularJS与后端php的数据交互方法
2018/08/13 Javascript
vue实现公共方法抽离
2020/07/31 Javascript
[01:14]英雄,所敬略同——2018完美盛典宣传视频4K
2018/12/05 DOTA
Python操作Excel之xlsx文件
2017/03/24 Python
Python操作mongodb数据库进行模糊查询操作示例
2018/06/09 Python
python实现windows壁纸定期更换功能
2019/01/21 Python
python自定义函数实现最大值的输出方法
2019/07/09 Python
Python如何使用k-means方法将列表中相似的句子归类
2019/08/08 Python
HTML5 canvas 基本语法
2009/08/26 HTML / CSS
用HTML5.0制作网页的教程
2010/05/30 HTML / CSS
编写用C语言实现的求n阶阶乘问题的递归算法
2014/10/21 面试题
介绍下Java中==和equals的区别
2013/09/01 面试题
公司离职证明范本(汇总)
2014/09/10 职场文书
银行安全保卫工作总结
2015/08/10 职场文书
全面盘点MySQL中的那些重要日志文件
2021/11/27 MySQL