js模拟鼠标移动事件,js模拟鼠标点击事件
这次的效果图如下:
我觉得这个实验的难点在于保持盒子和鼠标的相对位置不变,通过按住和移动鼠标来达到拖动的效果。
如何实现拖拽的效果呢?
我们需要使用三个函数:onmousedown、onmousemove和onmouseup,分别代表鼠标按下、鼠标移动和鼠标抬起。
在鼠标按压的回调函数中,我们需要通过clientX和clientY获取鼠标的初始位置,通过offsetLeft和offsetTop获取盒子的初始位置,然后计算鼠标的初始位置和盒子的初始位置之差;
在鼠标移动的回调函数中,我们需要根据鼠标位置和之前计算的差值得到盒子的当前位置,然后改变它的left和top值。别忘了把位置设为绝对(因为我忘了。)
在鼠标抬起的回调函数中,我们需要清除鼠标移动和鼠标抬起,方法是将onmousemove和onmouseup的值设置为null。
注意!!!更。
鼠标移动函数和鼠标抬起函数都要写在鼠标按压函数里,因为我们要设计鼠标按压这个动作后的后续行为,还有很重要的一点是:
鼠标按下函数是p的,鼠标移动和鼠标抬起是document的
因为我们的意思不是鼠标在P中移动,而是在整个页面上移动。
这大概就是重点。代码如下:
!声明文档类型
超文本标记语言
头
meta charset=UTF-8
meta http-equiv= X-UA-Compatible content= IE=edge
meta name= viewport content= width=device-width,initial-scale=1.0
标题文档/标题
风格
#框{
宽度:100px
高度:100px
背景色:海蓝宝石;
边框-半径:14px
box-shadow: 2px 2px 6px rgba(0,0,0, 3);
/*小子,我想移动改左,不设置定位。*/
位置:绝对;
}
/风格
/头
身体
div id=box/div
脚本
let box=document . getelementbyid( box );
box . onmousedown=function(event){
let disx=event . clientx-box . offset left;
let disy=event . clienty-box . offsettop;
//这不是box.onmousemove,而是document.onmousemove
document . onmousemove=function(event){
box . style . left=event . clientx-disx px ;
box . style . top=event . clienty-disy px ;
}
//用ommousedown写
document.onmouseup=function(){
//两者都应该设置为null
document.onmousemove=null
document.onmouseup=null
返回false
}
}
/脚本
/body
/html相关推荐:【JavaScript视频教程】以上是js实现模拟鼠标拖动事件的详细内容(附图文示例)。更多信息请关注我们的其他相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。