首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

js拖拽

开发了那么久,对于js实现拖拽多少都写过,用于实际项目却没有。 先看一下之前写: 如果鼠标慢慢移动,拖拽是没有任何问题,如果速度快了,那么鼠标和元素就会分离。...因为我们是监听鼠标移动事件,鼠标移动时候需要执行我们定义函数,函数执行会有一些延时,当鼠标移动速度过快,导致函数延时使得元素跟不上鼠标移动速度,从而鼠标移出了元素,也就造成了元素不跟随鼠标了。...解决办法就是把监听元素换成document或者body,当函数执行延时了,因为鼠标还是在document和body上,也能一直触发函数,两者效果是一样,只有一个小区别 document: ?...两者都能很流畅拖动,区别就是浏览器上面的地方,不属于body,所以使用body会失效,建议使用document最好。 最后贴上代码: <!...之前在vue里面移除时候就遇到过这个问题。如果是想移动端使用,就都改成监听touch,任何用touches里面的参数。当然,你也可以去写一个兼容PC和移动端。 (完)

5.4K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    js拖拽上传图片

    有时候,在开发中,需要遇到拖拽上传图片需求,即从磁盘选中一张或多张图片,然后按着鼠标把图片拖动到页面上指定区域,实现图片上传。...ie=edge"> Document <script src="https://cdn.bootcss.com/jquery/1.12.0/jquery.<em>js</em>...这里我们就要先说说在 http 中传输<em>文件</em><em>的</em>问题。起初http协议中没有上传<em>文件</em>方面的功能,直到rfc1867为http协议添加了这个功能。...请求头<em>的</em>不同,对于上传<em>文件</em><em>的</em>请求,contentType = multipart/form-data是必须<em>的</em>,而 post 则不是,毕竟 post 又不是只上传<em>文件</em>~。...这里<em>的</em>不同也就是指前者在发送<em>的</em>每个字段内容之间必须要使用分界符来隔开,比如<em>文件</em><em>的</em>内容和文本<em>的</em>内容就需要分隔开,不然服务器就没有办法正常<em>的</em>解析<em>文件</em>,而后者 post 当然就没有分界符直接以 name =

    18.2K30

    js事件高级:拖拽

    什么是拖拽 拖拽就是在某一个对象上,当鼠标按下去之后,拖着对象走,松开鼠标时,对象位置变成拖拽位置 简单拖拽 1.实现简单拖拽功能 2.当拖拽对象到网页边缘时,会停留在边缘 实现代码 <!..._吸附 1.在实现简单拖拽基础上给拖拽对象一个区域范围 2.拖拽吸附:在靠近父级边缘时自动吸附在父级边缘 实现代码 <!...带框拖拽拖拽另一种形式,拖动时,跟着移动是对象虚线框,虚线框就是对象将要拖移到达位置 实现代码 <!...oDiv0.removeChild(oBox); } 实现效果 自定义滚动条 自定义滚动条是利用拖拽功能实现滚动条功能...下面的案例实现了 1.利用自定义滚动条改变div大小 2.利用自定义滚动条改变div透明度 实现代码 <!

    9.4K20

    js拖拽自动排列

    上一次写了拖拽,其实主要还是想实现拖拽之后实现自动排列,跟手机屏幕那样移动图标可以自动排列,先看效果: ? 很常见一个效果,先说一下思路: 每一个元素都是绝对定位,初始化时候是通过js去排列。...拖拽使用方法跟上一篇文章一模一样。...定义了一个数组,每个元素字段: {el: elArr[i], sort: i, index: i} el是这个元素,用于排列,也就是改变top和left,sort是元素排列位置,index是当前元素...拖拽时候,当鼠标点击选中当前元素时候,这个元素移动,当移动到另一个元素一半时候,相当于要替换这个元素,我是以这样一个方法判断移动到哪一个位置: let moveIndex = Math.round...我定义了一个当前index,如果移动到index不等于初始化index,那么就是要发生移动,当从大移动到小,在这个范围内,所有排序都要加1,其他不变,如果从小移动到大,这个范围内排序都要减1,其他不变

    5.7K20

    js实现简易拖拽

    简易拖拽 目录 代码实例 代码解析 scrollWidth,clientWidth,offsetWidth区别 offsetX,clientX,pageX辨析 下载源码链接 代码实例 <...x: x, y: y } } })() 代码解析 在 document 对象上绑定 mousemove 和 mouseup 事件,不在拖拽元素上绑定是因为当鼠标移动太快而超出元素范围时会停止拖拽...拖拽再快都不会超出 document 范围。...定义 scrollWidth:对象实际内容宽度,不包括边线宽度 clientWidth:对象内容可视区宽度,不包括边线宽度 offsetWidth:对象整体实际宽度,包括滚动条等边线...scrollWidth > clientWidth offsetWidth为元素实际宽度 offsetX,clientX,pageX辨析 offsetX,offsetY 指鼠标指针相对于触发事件元素左上角偏移

    6.3K10

    js 实现元素拖拽

    概述 js 实现拖拽,主要使用元素 onmousedown、onmousemove、onmouseup 三个事件实现。...1、onmousedown:鼠标按下事件 2、onmousemove:鼠标移动事件 3、onmouseup:鼠标抬起事件 实现思路 我们当左键点击时,需要记录当前鼠标点击位置相对于该元素左上角x,y...坐标,这里我们使用diffX和diffY来表示 然后我们移动时需要不断计算当前元素距离浏览器左边和上边距离; 同时给元素进行赋值; 当鼠标抬起时,取消鼠标移动事件和鼠标抬起事件。...// 浏览器兼容 e = e || window.event; // 元素...clientX 和 clientY 默认是以元素左上角位置来计算,这里需要向左向上同时减去鼠标点击位置差,从而可以保证鼠标始终显示在拖拽元素时位置

    10K30

    原生文件拖拽上传

    老规矩先说需求:上传文件需要拖拽上传 正常来讲一个UI库就支持了 比如antduploads组件 但是考虑到设计图差异太大了,所以需要自己来实现 也是很简单: 直接上代码吧 这个代码中包括了上传s3...     请拖拽头像到下方区域                 /*拖拽目标对象------ document...  *** 在新窗口中打开拖进图片       };       /*拖拽源对象----- 客户端一张图片 */       /*拖拽目标对象-----div#container  若图片释放在此元素上方...= list[i];           //            console.log(f);           reader(f);           //            读取指定文件内容...事件         }       };       async function reader(file) {         // 这里能获取到拖拽过来文件了         // 我这边是经过了一层

    92920

    js不借助后端,多文件拖拽压缩上传,支持选择文件

    在系统中上传文件时,需要支持多文件文件夹上传,并且需要在文件上传时需要将多文件压缩成zip包,下载时候,直接下载zip包 听到这个需求,我第一反应就是js应该没有强大吧,因为压缩和访问文件夹,涉及到了文件系统读取和修改...主要用到库是 jszip 则 则这里简单对jszip做下简单介绍,更详细功能和api请移步官网. jszip是是一个创建,读取和写入.zip文件js库, api优化,简单 浏览器支持 实现思路如下...: 1:用户选中文件文件夹后,获取文件对象, 2:遍历获取文件对象 放入实例化zip对象中 3:使用generateAsync()方法生成文件, 通过formdata提交到服务端 代码如下: 此案例支持拖拽上传多个文件...important } 这里说一下拖拽上传文件, 主要是用到原生事件是这三个 ondrop ondragover ondragleave 加上prevent 可以防止拖拽过程...在ondragover事件上可以处理文件拖拽到了可放置元素上,对用户 进行友好提示. ondrop 事件是文件拖拽到了元素上,松开鼠标时触发, 这个时候可以通过事件拿到拖拽文件列表 使用even.dataTransfer.files

    3.5K10
    领券