可以用鼠标拖动的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的表单操作 简单计算器
Dec 29 Javascript
JS隐藏参数post传值实例
Apr 18 Javascript
JavaScript执行顺序详细介绍
Dec 04 Javascript
利用浏览器全屏api实现js全屏
Jan 16 Javascript
javaScript的函数对象的声明详解
Feb 06 Javascript
JavaScript获得当前网页来源页面(即上一页)的方法
Apr 03 Javascript
jquery.cookie.js用法实例详解
Dec 25 Javascript
jQuery实现本地预览上传图片功能
Jan 08 Javascript
node.js中 stream使用教程
Aug 28 Javascript
浅析vue插槽和作用域插槽的理解
Apr 22 Javascript
ES6 Map结构的应用实例分析
Jun 26 Javascript
基于layui轮播图满屏是高度自适应的解决方法
Sep 16 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
PHP5 安装方法
2007/01/15 PHP
PHP 读取Postgresql中的数组
2013/04/14 PHP
php输出xml必须header的解决方法
2014/10/17 PHP
PHP中配置IIS7实现基本身份验证的方法
2015/09/24 PHP
php实现的pdo公共类定义与用法示例
2017/07/19 PHP
详解PHP变量传值赋值和引用赋值变量销毁
2019/03/23 PHP
Jquery事件的连接使用示例
2013/06/18 Javascript
js 立即调用的函数表达式如何写
2014/01/12 Javascript
JavaScript Promise启示录
2014/08/12 Javascript
Javascript基础教程之数据类型 (数值 Number)
2015/01/18 Javascript
jQuery通过控制节点实现仅在前台通过get方法完成参数传递
2015/02/02 Javascript
jQuery时间轴插件使用详解
2015/07/16 Javascript
JavaScript实现快速排序的方法
2015/07/31 Javascript
jquery实现删除一个元素后面的所有元素功能
2015/12/21 Javascript
使用jQuery给input标签设置默认值
2016/06/20 Javascript
jQuery代码性能优化的10种方法
2016/06/21 Javascript
学好js,这些js函数概念一定要知道【推荐】
2017/01/19 Javascript
微信小程序 JS动态修改样式的实现代码
2017/02/10 Javascript
从零开始学习Node.js系列教程之设置HTTP头的方法示例
2017/04/13 Javascript
解决vue-cli项目webpack打包后iconfont文件路径的问题
2018/09/01 Javascript
小程序实现层叠卡片滑动效果
2019/08/26 Javascript
基于vue项目设置resolves.alias: '@'路径并适配webstorm
2020/12/02 Vue.js
一文秒懂nodejs中的异步编程
2021/01/28 NodeJs
python 不关闭控制台的实现方法
2011/10/23 Python
Python算法应用实战之队列详解
2017/02/04 Python
基于Python实现的ID3决策树功能示例
2018/01/02 Python
python 读写文件,按行修改文件的方法
2018/07/12 Python
详解Python解决抓取内容乱码问题(decode和encode解码)
2019/03/29 Python
Saucony澳大利亚官网:美国跑鞋品牌,运动鞋中的劳斯莱斯
2018/05/05 全球购物
Nike澳大利亚官网:Nike.com (AU)
2019/06/03 全球购物
国家助学金获奖感言
2014/01/31 职场文书
元旦促销方案
2014/03/15 职场文书
自主招生推荐信怎么写
2015/03/26 职场文书
鉴史问廉观后感
2015/06/10 职场文书
Pytorch 中net.train 和 net.eval的使用说明
2021/05/22 Python
四十九个javascript小知识实用技巧
2021/11/20 Javascript