首页 > 其他分享 >JS实现拖拽效果

JS实现拖拽效果

时间:2022-09-02 13:37:09浏览次数:46  
标签:clientX style container 效果 拖拽 drag let JS event

HTML部分

<div id="container" >
    <div id="drag">
        拖拽区域
    </div>
</div>

 

CSS部分:

#container {
    width: 300px;
       /* overflow: hidden有效阻止鼠标超出拖动范围而触发mousemove回调 */
    overflow: hidden;
    position: relative;
    height: 300px;
    background-color: #ddd
}

#drag {
    color: white;
    width: 80px;
    height: 80px;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 12px;
    position: absolute;
    user-select: none;
    cursor: pointer;
    background-color: rgb(0, 174, 255);
}

JavaScript部分:

let container = document.getElementById('container')
let drag = document.getElementById('drag')
drag.style.left = "0px"
drag.style.top = "0"
drag.onmousedown = function (event) {
    let clientX = parseInt(event.clientX)//鼠标事件的x坐标位置
    let clientY = parseInt(event.clientY)//鼠标事件的y坐标位置
    let currentLeft = parseInt(drag.style.left)
    let currentTop = parseInt(drag.style.top)
    container.onmousemove = function (event) {

        drag.style.left = (event.clientX - clientX + currentLeft) + "px"
        drag.style.top = (event.clientY - clientY + currentTop) + "px"
    }
 
    //监听整个文档区域,避免拖拽到边缘鼠标放开没有监听到回调
    document.onmouseup = function () {
        container.onmousemove = null
    }
}

 效果

 

标签:clientX,style,container,效果,拖拽,drag,let,JS,event
From: https://www.cnblogs.com/mesmerize/p/16649499.html

相关文章

  • springboot项目使用jsp
    异常问题场景提示:这里简述项目相关背景springboot课堂学习问题详情提示:这里描述项目中遇到的问题jsp无法访问原因分析提示:这里填写问题的分析没有jsp解......
  • js数组方法
    修改器方法会改变自身的值push(element1,...,elementN):在数组的末尾增加一个或多个元素,并返回数组的新长度。pop():删除数组的最后一个元素,并返回这个元素(数组为空......
  • After Effects 教程,如何在 After Effects 中对立体视频应用沉浸式视频效果?
    欢迎观看AfterEffects中文版教程,小编带大家学习AfterEffects的基本工具和使用技巧,了解如何在AE中对立体视频应用沉浸式视频效果。在PremierePro中对立体视频应......
  • js 实现选择排序及优化
    //选择排序//原理:进行n-1趟循环,每趟循环中遍历所有未排好序的数,第一趟循环,从第0个元素开始向后遍历,找到最小的元素,与第1一个元素进行交换,第二趟,从第1个元素开始......
  • Vue实现CSDN评论区的抽屉drawer效果,不需要用el-drawer组件。
    一、效果预览二、代码思路1、思路:在当前页面添加一个浮动的div组件,用v-if绑定显示与否,点击评论图标的时候,显示该div<!--评论弹窗--><divv-if="drawer"class......
  • mockjs介绍
    一、为什么使用mockjs在做开发时,当后端的接口还未完成,前端为了不影响工作效率,手动模拟后端接口,1.我们可以使用json文件来模拟后台数据,但比较局限,无法模拟数据的增删改......
  • 如何在 JavaScript 中将 JSON 转换为 CSV
    如何在JavaScript中将JSON转换为CSV下面是我们如何在JavaScript中轻松地将JSON转换为CSV:函数jsonToCsv(项目){constheader=Object.keys(items[0]);常......
  • js获取当前月第一天和最后一天(2022-09-02 00:00:00 - 2022-09-02 23:59:59)
    1.获取当前月第一天//获取当前月第一天exportfunctiongetCurrentMonthFirst(){vardate=newDate();date.setDate(1);returnnewDate(newDate(date).to......
  • 认识Node.js以及相关说明
    首先我们先要认识一下,Node是用JavaScript来编写的。问:JavaScript时怎么组成的?答:JavaScript主要是由两块核心组成,第一个核心是js的核心语法,该语法也被称为ECMAScript,语法......
  • js 对象的深复制 解决不能复制undefined
    用普通的拷贝 JSON.parse和JSON.stringify进行对象拷贝是不会拷贝undefined//普通的拷贝  constobj={    a:{     b:{    ......