JavaScript实现DIV拖动效果
来源:互联网 发布:淘宝服装店开店流程 编辑:程序博客网 时间:2024/05/16 00:46
具体步骤:
1.在对象(层)上按下鼠标时,先捕获到需要拖曳的对象,然后获取或设置该对象的相关属性。
obj=event.srcElement
obj.setCapture()
z=obj.style.zIndex
obj.style.zIndex=100
x=event.offsetX
y=event.offsetY
down=true
2.开始拖曳时,捕获鼠标当前位置,并根据该数值设置被拖曳对象的位置。
obj.style.posLeft=document.body.scrollLeft+event.x-x
obj.style.posTop=document.body.scrollTop+event.y-y
3.拖曳完松开鼠标后,重设标志 down ,还原对象的 z-index并释放对它的鼠标捕捉。
down=false
obj.style.zIndex=z
obj.releaseCapture()
4.完整代码。
<script>
var x,y,z,down=false,obj
function init(){
obj=event.srcElement //事件触发对象
obj.setCapture() //设置属于当前对象的鼠标捕捉
z=obj.style.zIndex //获取对象的z轴坐标值
//设置对象的z轴坐标值为100,确保当前层显示在最前面
obj.style.zIndex=100
x=event.offsetX //获取鼠标指针位置相对于触发事件的对象的X坐标
y=event.offsetY //获取鼠标指针位置相对于触发事件的对象的Y坐标
down=true //布尔值,判断鼠标是否已按下,true为按下,false为未按下
}
function moveit(){
//判断鼠标已被按下且on
if(down&&event.srcElement==obj){
with(obj.style){
/*设置对象的X坐标值为文档在X轴方向上的滚动距离加上当前鼠标指针相当于文档对象的X坐标值减鼠标按下时指针位置相对于触发事件的对象的X坐标*/
posLeft=document.body.scrollLeft+event.x-x
/*设置对象的Y坐标值为文档在Y轴方向上的滚动距离加上当前鼠标指针相当于文档对象的Y坐标值减鼠标按下时指针位置相对于触发事件的对象的Y坐标*/
posTop=document.body.scrollTop+event.y-y
}
}
}
function stopdrag(){
//on
down=false
obj.style.zIndex=z //还原对象的Z轴坐标值
obj.releaseCapture() //释放当前对象的鼠标捕捉
}
</script>
<div on
<div on
<div on
注意:只有 CSS 的 position 属性值为 absolute 的对象才能进行拖动操作。
提示:如果需要将拖曳组件化,可以参考第二部分HTC一节。
技巧:可以在 init() 函数中加一句 event.cancelBubble=true ,以取消在该对象上的事件冒泡。
试一试:读者可以试着实现移动其他对象,例如移动一个图片或文本框。
特别提示
在拖曳对象前必须确保该对象的为绝对定位的,把上面的完整代码保存就可以看到效果了,在实际就用时务必在对象上加上 on
图 3.8 可拖动的层
特别说明
本例需要掌握的技巧比较多,捕捉鼠标,获取鼠标位置(相当于对象),释放鼠标捕捉,文档的滚动距离还有with 语句。
1. setCapture() 设置属于当前文档的对象的鼠标捕捉。
2. event.offsetX 设置或获取鼠标指针位置相对于触发事件的对象的 x 坐标。
3. event.offsetY 设置或获取鼠标指针位置相对于触发事件的对象的 y 坐标。
4. releaseCapture() 释放当前文档中对象的鼠标捕捉。
5. scrollLeft 设置或获取位于对象左边界和窗口中目前可见内容的最左端之间的距离。
6. scrollTop 设置或获取位于对象最顶端和窗口中可见内容的最顶端之间的距离。
7. with 为一个或多个语句设定默认对象。
- JavaScript实现DIV拖动效果
- DIV拖动效果实现
- div实现拖动效果
- JavaScript:Div层拖动效果
- JavaScript实现拖动效果
- javascript实现拖动效果
- javascript 实现拖动效果
- DIV拖动效果的实现。
- JQuery实现DIV拖动效果
- jquery 实现 div 拖动效果
- JS+DIV 实现拖动效果
- Javascript 实现 div 的拖动
- 转载一个js实现div拖动效果
- js 实现 鼠标拖动DIV 效果
- JQuery实现DIV拖动效果示例
- jQuery实现Div控件拖动效果
- JavaScript配合Div实现工具栏拖动
- 用javascript实现DIV的拖动
- 一个查找的问题
- MyEclipse 快捷键
- struts2中的addActionError 、addFieldError、addActionMessage的方法
- ASIHTTPRequest类库简介和使用说明
- 关于数据库连接池
- JavaScript实现DIV拖动效果
- 在内核态执行用户空间程序
- 安全认证框架-Apache Shiro研究心得
- GlassFish服务器批处理代码启动和关闭
- 1. BT协议
- 项目管理心得:一个项目经理的个人体会、经验总结
- python中setup安装包
- Handler:更新UI的方法
- linux学习杂记(四)