首页 前端知识 鼠标事件 ——拖拽效果

鼠标事件 ——拖拽效果

2024-03-07 08:03:54 前端知识 前端哥 206 315 我要收藏

目录

关于鼠标事件

拖拽效果


关于鼠标事件

鼠标事件类型:
    onclick 单击
    ondbclick 双击
    oncontextmenu 右侧菜单
    onmouseover 移入
    onmouseout 移出
    onmouseenter 移入
    onmouseleave 移出
    onmousedown 按下
    onmouseup  抬起
    onmousemove  移动

建议使用enter和leave 因为over和out在进入移出子级标签时会触发

拖拽效果

定义一个块<div class="drag"></div>

1.获取drag

var drag = document.querySelector(".drag");
复制

2.鼠标按下事件

(1)获取原位置坐标 ,左边距及上边距;

(2)鼠标移动事件获取移动过后坐标,与原数据做差值,得到重新定位和的位置

(3)修改drag位置

drag.onmousedown = function (e1) {
var x1 = e1.clientX;
var y1 = e1.clientY;
var l1 = this.offsetLeft;
var t1 = this.offsetTop;
// 鼠标移动事件, 计算差值, drag重新定位
window.onmousemove = function (e2) {
var x2 = e2.clientX;
var y2 = e2.clientY;
var l2 = l1 + (x2 - x1);
var t2 = t1 + (y2 - y1);
// 边界处理
l2 = l2 < 0 ? 0 : (l2>window.innerWidth - drag.offsetWidth ? window.innerWidth - drag.offsetWidth: l2) ;
t2 = t2 < 0 ? 0 : (t2>window.innerWidth - drag.offsetWidth ? window.innerWidth - drag.offsetWidth: t2) ;
drag.style.left = l2 + 'px';
drag.style.top = t2 + 'px';
}
}
复制

3.鼠标抬起

// 当鼠标抬起时 去掉mousemove事件
drag.onmouseup = function () {
window.onmousemove = null;
}
复制

转载请注明出处或者链接地址:https://www.qianduange.cn//article/3387.html
标签
评论
发布的文章

jquery for循环

2024-03-31 10:03:15

大家推荐的文章
会员中心 联系我 留言建议 回顶部
复制成功!