可以用鼠标拖动的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 相关文章推荐
File文件控件,选中文件(图片,flash,视频)即立即预览显示
Apr 09 Javascript
Javascript开发之三数组对象实例介绍
Nov 12 Javascript
JS实现灵巧的下拉导航效果代码
Aug 25 Javascript
如何使用PHP+jQuery+MySQL实现异步加载ECharts地图数据(附源码下载)
Feb 23 Javascript
jQuery中常用动画效果函数(日常整理)
Sep 17 Javascript
javascript判断firebug是否开启的方法
Nov 23 Javascript
node.js入门教程之querystring模块的使用方法
Feb 27 Javascript
Bootstrap栅格系统简单实现代码
Mar 06 Javascript
聊聊Vue.js的template编译的问题
Oct 09 Javascript
Vue前端开发规范整理(推荐)
Apr 23 Javascript
vue实现打印功能的两种方法
Sep 07 Javascript
vue history 模式打包部署在域名的二级目录的配置指南
Jul 02 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下实现折线图效果的代码
2007/04/28 PHP
php去掉字符串的最后一个字符附substr()的用法
2011/03/23 PHP
php懒人函数 自动添加数据
2011/06/28 PHP
PHP中使用sleep函数实现定时任务实例分享
2014/08/21 PHP
PHP根据session与cookie用户登录状态操作类的代码
2016/05/13 PHP
PHP7下协程的实现方法详解
2017/12/17 PHP
php下的原生ajax请求用法实例分析
2020/02/28 PHP
比较简单的异步加载JS文件的代码
2009/07/18 Javascript
javascript Base类 包含基本的方法
2009/07/22 Javascript
javascript中返回顶部按钮的实现
2015/05/05 Javascript
JavaScript弹窗基础篇
2016/04/27 Javascript
javascript入门之数组[新手必看]
2016/11/21 Javascript
Bootstrap导航条的使用和理解3
2016/12/14 Javascript
微信小程序实现滚动消息通知
2018/02/02 Javascript
详解处理bootstrap4不支持远程静态框问题
2018/07/20 Javascript
Vue模拟数据,实现路由进入商品详情页面的示例
2018/08/31 Javascript
vue实现轮播图帧率播放
2021/01/26 Vue.js
[51:17]VGJ.T vs Mineski 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
python发送伪造的arp请求
2014/01/09 Python
编写同时兼容Python2.x与Python3.x版本的代码的几个示例
2015/03/30 Python
Python删除windows垃圾文件的方法
2015/07/14 Python
PHP网页抓取之抓取百度贴吧邮箱数据代码分享
2016/04/13 Python
Python+matplotlib实现填充螺旋实例
2018/01/15 Python
python通过opencv实现图片裁剪原理解析
2020/01/19 Python
PyCharm 在Windows的有用快捷键详解
2020/04/07 Python
HTML5图片预览实例分享
2014/06/04 HTML / CSS
Lungolivigno Fashion官网:高级时装在线购物
2020/10/17 全球购物
德国富尔达运动鞋店:43einhalb
2020/12/25 全球购物
如何实现jdbc性能优化
2012/07/30 面试题
中学家长会邀请函
2014/01/17 职场文书
库房管理员岗位职责
2014/03/09 职场文书
满月酒主持词
2014/03/27 职场文书
公司门卫岗位职责范本
2014/07/08 职场文书
四风查摆问题自查报告
2014/10/10 职场文书
祝福语集锦:给妹妹结婚的祝福语
2019/12/18 职场文书
python实现自动化群控的步骤
2021/04/11 Python