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

html5 drag API 实现列表拖拽

,此事件作用在被拖曳元素上 elem.addEventListener('dragenter', handleDragEnter, false) //当拖曳元素进入目标元素的时候触发的事件,此事件作用在目标元素上...elem.addEventListener('dragover', handleDragOver, false); //拖拽元素在目标元素上移动的时候触发的事件,此事件作用在目标元素上 elem.addEventListener...('dragleave', handleDragLeave, false); //拖拽元素离开目标元素上移动的时候触发的事件,此事件作用在目标元素上 elem.addEventListener('drop...', handleDrop, false); //被拖拽的元素在目标元素上同时鼠标放开触发的事件,此事件作用在目标元素上 elem.addEventListener('dragend', handleDragEnd...previous target element. } 在拖拽过程中蓝色的线条是一个边框,利用拖拽事件添加class 并设置css就能有“响应”式的效果。

1.1K10

HTML5 drag和drop的亲手实践

> 这样,该元素就可以拖动了 ondragstart: 当元素开始被拖动时,触发该事件,目标对象是被拖动的元素 ondragover: 当被拖动元素在悬挂元素上移动的时候,该事件触发。...2.为每个div都设置一个ondragstart函数,当该函数触发的时候,进行初始化操作,比如记录当前的目标对象,拖动目标的y值,以及设置拖动的效果。...当ondragleave事件触发的时候,则把dotted类从目标对象移除。 // 当被拖动元素在悬挂元素上移动的时候,该事件触发。目标对象是被拖动元素悬挂的那个元素。...function handleDragLeave(ev) { ev.target.classList.remove('dotted') } 4.为每个div注册ondrog事件和ondragend事件...,ondrog事件是重点,它主要是根据被拖动元素和被拖动元素悬挂的那个元素的坐标,来决定是要将被拖动元素插入到悬挂元素的前面还是后面。

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

    【实战技巧】VUE3.0实现简易的可拖放列表排序

    拖拽事件 可用的拖拽事件一共有七个,其中三个是用于拖拽元素的 dragstart 在元素开始被拖动时触发 dragend 在拖动操作完成时触发 drag 在元素被拖动时触发 四个是用于释放区域的 dragenter...当被拖动元素进入到释放区所占据的屏幕空间时触发 dragover 当被拖动元素在释放区内移动时触发 dragleave 当被拖动元素没有放下就离开释放区时触发 drop 当被拖动元素在释放区里放下时触发步骤...首先给被拖放的元素添加 draggable 属性并添加 dragstart 事件处理函数 定义拖放数据,本例定义的是拖拽元素的id 定义一个释放区域,添加 drop 和 dragover 事件处理函数...const handleDragleave = (ev) => { console.log(' ~ dragleave 触发啦'); } // 当被拖动元素在释放区里放下时触发...中的实现思路 原生js实现拖拽排序我还没有弄,但是在vue中就非常的简单,因为我们在触发任何事件的时候,都可以拿到元素的index,我们可以靠index轻易实现。

    2.1K40

    HTML5 拖放API与Vue.js实战

    当用户将鼠标移到可拖动元素上时,拖动操作开始,然后将元素移动到启用拖放的元素上。 再默认情况下,唯一可拖动的 HTML 元素是图像和链接。...为了使其他元素可拖动,需要通过将 draggable 属性添加到元素;也可以在 JavaScript 中选择元素并将 draggable 属性设置为 true 来显式创建功能。...所以,如果没有数据传输的能力,那么拖动元素就毫无用处了。...从拖动到释放元素的这段时间中,元素被拖放后,将会在被拖动的元素上触发两个事件:dragstart 和 dragend。 现在还不能把可拖动元素拖放到任何地方。...,将会在启用拖放的元素上触发以下事件: Dragenter:当一个元素被拖动到启用拖放的元素上时触发一次Dragover:只要元素仍然位于启用了 drop 的元素上,就会连续触发Drop:在把拖动的元素拖放到启用了拖放的元素上之后触发

    4.3K10

    Flutter:手把手教你实现一个仿QQ侧滑菜单

    当然,我们实现简单的侧滑功能并不需要这么复杂,因为没有涉及到滑动冲突,我们只需使用系统自带的HorizontalDragGestureRecognizer类就可以了。...这里用到了AnimationController和Ticker类。...Step 5 实现用户拖动到一半时自动完成/取消操作   实际使用中,我们经常会碰到一个问题,就是用户的手指并没有完全滑动到maxDragDistance这个值,可能化到一半就停止了。...给上层布局添加阴影:参考shadowBlurRadius和shadowSpreadRadius属性; 添加阻尼系数dragDampening,这个参数在我们做List滑动的时候很常见,布局的实际移动距离...之所以没有将缩小效果包裹进控件,是因为我希望控件的形变可以更为灵活,大家可以从外部去控制,而不是直接写死。

    2.1K10

    140. 精读《结合 React 使用原生 Drag Drop API》

    stopPropagation 是阻止冒泡,这样同样监听了事件的父元素就不会收到响应,我们可以精准作用于嵌套的子元素。...总结一下,利用 HTML5 的 API 将拖拽转化为状态,最终通过状态映射到 UI。 原文内容还是比较简单的,笔者在精读部分再拓展一些更体系化的内容。...,DragContainer 包裹可以被拖入的元素,而至于 dragProps 与 dropProps 需要透传到子元素的 dom 节点,是为了利用 DOM API 控制拖拽效果,这也是拖拽唯一对 DOM...实现这种场景的方式就是将 DragContainer 与 DropContainer 作用到一个组件上: const Box = ( {({ dragProps...欢迎在评论区留言!如果你有辅助线实现方案解析的文章,欢迎分享,也可以期待笔者未来专门写一篇 “拖拽 placeholder” 实现剖析的精读。

    78920

    如何用120行代码,实现一个交互完整的拖拽上传组件?

    前言 你将在该篇学到: 如何将现有组件改写为 React Hooks函数组件 useState、useEffect、useRef是如何替代原生命周期和Ref的。...于是我又用React Hooks 重写了一版,除CSS的代码总数 120行。 效果如下: ? 1....需要第二个叠加层 除了drop事件,另外三个事件都是动态变化的,而在拖动元素时,每隔 350 毫秒会触发 dragover事件。 此时就需要第二ref来统一控制。...事件在生命周期里的触发与销毁 原本EventListener的事件需要在componentDidMount添加,在componentWillUnmount中销毁: componentDidMount (...如此可以将添加(componentDidMount)和移除(componentWillUnmount) 订阅的逻辑放在一起。

    2K30

    有趣的拖放案例

    引言拖放可能看起来像一个简单的用户交互,其中你拾取一个项目并将其放置在其他地方,类似于在Trello板或任何看板样式界面上组织项目,其中卡片或信息可以轻松通过点击和拖动进行重新排列。...由于这些边缘情况,基于拖放位置移动元素数据的代码变得混乱不堪。react-beautiful-dnd停止维护和支持也不利于继续使用它的理由。...它使用Sortable来解决这个问题,因为这是它解决的用例之一。它符合我们解决更复杂的嵌套拖放场景以及在不同级别拖动的能力的目标。...在react-beautiful-dnd中实现这一点可能会很具有挑战性,因为它将具有有限的功能并且需要大量的JavaScript来达到令人满意的状态。...在我们的场景中,我们希望在拖动期间显示元素及其子元素的精简版本,因此我们使用了带有React portal的DragOverlay。

    30900

    Flutter完整开发实战详解(十八、 神奇的ScrollPhysics与Simulation)

    一、前言 如下图所示,Flutter 默认的可滑动 Widget,在 Android 和 iOS 上具备不同的 滑动与边缘拖拽效果 ,这是因为在不同平台上,默认使用了不同的 ScrollPhysics...Flutter 中的 ListView 、CustomScrollView 等 Scrollable 控件,在 Android 和 iOS 平台的滚动和边界拖拽效果,会有如下图所示的平台区别呢?...这三个方法的触发时机在于 _handleDragUpdate 、 _handleDragCancel 和 _handleDragEnd ,也就是拖动过程和拖动结束的时机: applyPhysicsToUserOffset...createBallisticSimulation 是在 _handleDragCancel 和 _handleDragEnd 时被触发的。...事实上,通过选择或者调整 Simulation ,就可以对列表滑动的速度、阻尼、回弹效果等实现灵活的自定义。

    15.5K61

    前端里的拖拖拽拽了解一下?

    在拖动元素期间,一些与拖放相关的事件会被触发,像 drag 和 dragover 类型的事件会被频繁触发。...dragleaveondragleave当拖动元素离开一个可释放目标元素放置dragoverondragover当元素被拖到一个可释放目标元素上时(100 ms/次)放置dropondrop当拖动元素在可释放目标元素上释放时放置...1.3 DataTransfer 在上述的事件类型中,不难发现,放置元素和拖动元素分别绑定了自己的事件,可如何将拖拽元素和放置元素建立联系以及传递数据?...—— DataTransfer - MDN[3] DataTransfer 对象在不同浏览器上因为标准可能不一样使得 API 有差异,但有几个“标准(常用)”属性和方法需要熟悉 在 Chrome 浏览器上的...,可以参阅:《关于react中使用拖拽插件的评测[4]》 四、总结 由于低代码平台其实会有丰富的拖拽场景,从可扩展和兼容性上考虑,最终选择了 react-dnd 作为基础拖拽库,当然,在复杂的拖拽场景下

    5K30

    掌握原生拖拽,类似拖拽需求,一网打尽

    ,希望看完对项目有所思考和帮助。...初识拖拽 首先我们必须知道了解几个拖拽API[1] dragstart 当一个元素被拖拽时触发【拖拽元素上绑定】 dragend 当一个被拖拽元素结束拖拽时触发【拖拽元素上绑定】 dragover 被拖拽元素拖入目标区域后就会触发该事件...【目标区域绑定事件】 drop 当被拖拽元素拖入目标区域结束是会触发该事件【在目标区域绑定】 开始一个项目 首先先搭建了一个基本的页面,我们先看下左边区域 <div class...,所有冠军与亚军名单都可以拖入中奖名单中去 并且我们看到在左侧区域被拖拽的元素上绑定了dragstart,dragend事件,并且我们需要在被拖走元素上指定draggable: true(这样设置后,该元素就默认可以拖拽了...@dragover 这个是当拖拽元素拖入目标元素中时,就会一直触发,当离开时就会停止触发,默认情况拖入目标区域时,被拖拽元素会一个回弹效果,这里需要阻止默认事件 有两种方式 1、利用vue的事件修饰符

    93520

    抛开插件,你真的懂拖动怎么实现吗?

    回到正题,本章将分享一些关于 Javascript 中拖动的内容,探索拖动过程的奥秘。 元素拖动 刚开始,咱们循序渐进,先来实现一个最简单的功能,让一个元素变成可拖动元素。 布局与样式: 的区别如下: 1️⃣ 拖动元素的位置 = 拖动元素原本位置 + 拖动距离 2️⃣ 拖动元素的位置 = 根据鼠标最新位置直接计算拖动元素的最新位置 = 鼠标最新位置 - 鼠标在拖动元素上的距离 鼠标在拖动元素上的距离...: 效果如下: 现在每个元素都能拖动了,只是还没有加上交换的逻辑。...,如果是在局部,需要在共同的父元素上加上relative,小编这里父元素是body,就不用了。...咱们仅需要改动 mouseUpHandler 函数,在拖动结束的时候将列表子项的索引信息同步回原表格上,然后把列表移除就可以了。

    7310

    web前端优化之reflow(减少页面的回流)

    reflow(回流)是指浏览器为了重新渲染部分或者全部的文档,重新计算文档中的元素的位置和几何构造的过程。 因为回流可能导致整个Dom树的重新构造,所以是性能的一大杀手。...以下操作会引起回流: ① 改变窗口大小 ② font-size大小改变 ③ 增加或者移除样式表 ④ 内容变化(input中输入文字会导致) ⑤ 激活CSS伪类(:hover) ⑥ 操作class属性,新增或者减少...② 具有动画效果请使用absolute 因为absolute元素的改变对其它元素的回流影响不大,所以我们的动画效果的元素还是将他搞成absolute吧。...③ 避免使用表格布局(记住只是布局哦,我们数据还是应该用表格的) ④ 请绝对不要使用CSS表达式,性能杀手啊,特别是IE ⑤ 在最末改变元素 因为回流是自上而下的,所以下不及上,我们在最后面修改信息对全局影响越少...⑥ 动画移动时候,要控制 比如我们拖动元素时候,我是在他x或者y坐标改变5px才操作,这样虽说降低了平滑度,但是对性能有提高。

    1.4K70

    JavaScript进阶之实现拖拽

    mouseup事件在指针设备按钮抬起时触发。 当指针设备( 通常指鼠标 )在元素上移动时, mousemove 事件被触发。 JavaScript三大家族 ? ? 明白了上述?...mousemove 事件上移动球 document.addEventListener('mousemove', onMouseMove); // 放下球,并移除不需要的处理程序...,此事件作用在目标元素上 ondragover 事件:拖拽元素在目标元素上移动的时候触发的事件,此事件作用在目标元素上 ondrop 事件:被拖拽的元素在目标元素上同时鼠标放开触发的事件,此事件作用在目标元素上...定义拖动效果 dropEffect 属性用来控制拖放操作中用户给予的反馈。它会影响到拖动过程中浏览器显示的鼠标样式。比如,当用户悬停在目标元素上的时候,浏览器鼠标也许要反映拖放操作的类型。...有 3 个效果可以定义: copy 表明被拖动的数据将从它原本的位置拷贝到目标的位置。 move 表明被拖动的数据将被移动。 link 表明在拖动源位置和目标位置之间将会创建一些关系表格或是连接。

    2.7K40

    使用concent,渐进式的重构你的react应用吧

    [power your react] 需求来了 上周天气其实不是很好,记得下了好几场雨,不过北京总部大厦的隔音太好了,以致于都没有感受到外面的风雨飘摇,在工位上正在思索着整理下现有代码时,接到一个普通的需求...}/> ); } } // es6装饰器还处于实验阶段,这里就直接包裹类了 // 等同于在class上@register( )...来装饰类 export default register( )(ColumnConfModal) 可以发现,这个类的内部和传统的react类写法并无区别,唯一的区别是concent会为每一个实例注入一个上下文对象...redux完全不一样的,核心逻辑部分也不是在redux之上做包装,和redux一点关系都没有的^_^,这里只是桥接了redux-dev-tool插件,来辅助做状态变更记录的,小伙伴们千万不要误会,没有redux...现在让我们打开chrome的redux插件看看效果吧。

    1.9K261

    JavaScript之移动端网页特效(1)

    targetTouches 我们用targetTouches包含着一个数组,里面包含的是每根手指的各种属性和信息,targetTouches[0]可以看到第一个手指的一些属性: 网页拖动元素我们已经学会了...,手机也能拖动元素,我们现在要学习一下: 但是我们还要注意,触摸滑动是有默认的屏幕滚动的,就是说本来我只想拖动盒子,但是 整个页面都滚动起来了....11 往左划也一样,但是现在还没做拖动效果 下面要做小圆点跟随图片变化的效果,也引出了新的知识点: classList属性 classList属性是HTML5新增的一个属性,返回元素的类名...该属性用于在元素中添加,移除及切换CSS类.有以下方法: 添加类: element.classList.add('类名'); (注意类名不需要加'.')...移除类: element.classList.remove('类名') (注意类名不需要加'.')

    2.6K20

    使用concent,体验一把渐进式地重构React应用之旅

    需求来了 上周天气其实不是很好,记得下了好几场雨,不过北京总部大厦的隔音太好了,以致于都没有感受到外面的风雨飘摇,在工位上正在思索着整理下现有代码时,接到一个普通的需求,大致是要实现一个弹窗。...}/> ); } } // es6装饰器还处于实验阶段,这里就直接包裹类了 // 等同于在class上@register( )...来装饰类 export default register( )(ColumnConfModal) 复制代码 可以发现,这个类的内部和传统的react类写法并无区别,唯一的区别是concent会为每一个实例注入一个上下文对象...redux完全不一样的,核心逻辑部分也不是在redux之上做包装,和redux一点关系都没有的^_^,这里只是桥接了redux-dev-tool插件,来辅助做状态变更记录的,小伙伴们千万不要误会,没有redux...现在让我们打开chrome的redux插件看看效果吧。 ?

    76920

    HTML5原生拖放事件的学习与实践

    具体实现的效果也很简单:元素可以在容器中任意拖动,元素被移入容器的时候,还会有相关样式的改变已达到更好的展示效果。 例子基本运用了拖放事件的全部事件,并且尽量简洁的展示了出来。特此记录。...而拖动又由 2 部分组成,分别是被拖动元素的相关事件和元素容器的相关事件。...1、被拖动元素的相关事件 : 事件名称 说明 dragstart 在元素开始被拖动时候触发 drag 在元素被拖动时反复触发 dragend 在拖动操作完成时触发 2、容器的相关事件 : 事件名称 说明...dragover 当被拖动元素在目的地元素内时触发,一般需要取消浏览器的默认行为。...dragleave 当被拖动元素没有放下就离开目的地元素时触发 3、释放事件 : 事件名称 说明 drop 当被拖动元素在目的地元素里放下时触发,一般需要取消浏览器的默认行为。

    1.2K20
    领券