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

JavaScript 学习-50.实现页面菜单拖放(Drag 和 Drop)

这个任务由 ondragover 事件的 event.preventDefault() 方法完成: event.preventDefault() 进行放置 - ondrop 放开数据,会发生 drop...该方法将返回在 setData() 方法中设置为相同类型的任何数据 数据是元素的 id (“drag1”) 把元素追加到放置元素中 使用示例 一个完整的拖曳效果是由拖曳(Drag)和释放(Drop...> 页面显示效果 script代码 //拖曳开始触发 document.ondragstart...console.log('目标对象源对象拖动的进入'); // console.log('event.target'); // }; //源对象悬停在目标元素上方触发...); event.dataTransfer.setData('text/html',event.target.id);//传递id值 }; //源对象悬停在目标元素上方触发

1K20

前端文件上传功能实现原理

draggable 属性:就是标签元素要设置draggable=true ondragstart 事件:拖拽元素开始拖拽的时候触发的事件,此事件作用在被拖曳元素上 ondragenter...事件:拖曳元素进入目标元素的时候触发的事件,此事件作用在目标元素上 ondragover 事件:拖拽元素在目标元素上移动的时候触发的事件,此事件作用在目标元素上 ondrop 事件:拖拽的元素在目标元素上同时鼠标放开触发的事件...放置目标事件顺序: (1) dragenter (2) dragover (3) dragleave 或 drop 只要有元素动到放置目标上,就会触发 dragenter 事件(类似于 mouseover...紧随其后的是 dragover 事件,而且在被拖动的元素还在放置目标的范围内移动,就会持续触发该事件。...如果元素放到了放置目标中,则会触发 drop 事件而不是 dragleave 事件。

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

JavaScript的事件

是从里往外逐个触发 click me 点击了元素,这个click事件会按照如下顺序传播...是从外往里逐个触发 点击了元素,按照如下方式触发click事件 document->html->body->div 注意:IE9,Safari,Chrome,Opera,Firefox...UI事件 load 页面完全加载后再window上触发所有框架加载完毕在框架集上触发图像加载完毕在img元素触发嵌入的内容加载完触发 unload...>)中的一个或多个字符 resize 浏览器窗口调整到一个新的高度或者宽度,会触发 scroll 当用户滚动带滚动条的元素中的内容,在该元素触发resize,scroll会在变化期间重复激发...【支持子元素】在被选元素上与mouseleave效果相同 mouseleave 在位于元素上方的鼠标光标移动到元素范围之外触发,不冒泡【不支持子元素】 4.

1.4K30

对话框、模态框和弹出框看起来很相似,它们有何不同?

内容可以折叠,键盘用户应该能够使用与鼠标用户点击折叠内容的按钮相同的按钮。 主要模式 让我们看看一些常见的模式以及如何区分它们。...它们共同点是它们由两个部分组成:一个是触发元素,另一个是触发元素。 披露组件不会捕获焦点,没有背景,也不是模态的。它们通常使用触发器或特定的关闭按钮进行关闭或折叠。...如果用户没有触发它,将它移动到 DOM 中较早的适当位置模态对话框关闭:如果用户触发了它,将焦点返回到触发器。浏览器会对自动执行此操作。...如果用户没有触发它,将焦点移动到 DOM 中适当的位置。 对于所有其他组件(非模态对话框、弹出窗口或披露),预期的焦点管理因情况而异。...定义图标点击,它会打开。您的用户可能想滚动到其他地方、阅读其他内容或执行其他操作。最好保持这种模式为非模态。 游戏结束 用户已经玩了几个游戏关卡,但失败了,现在出现了“游戏结束”的对话框。

3.4K00

HTML5 拖放

拖放(Drag 和 drop)在WEB软件应用中是一种常见的操作,就是用户可以用鼠标点击对象以后拖到另一个位置。 拖放是HTML5 标准中的一部分,任何标签元素都能够拖放。 二、为什么需要拖放?...="true" /> 2、设置要拖动的内容(ondragstart 和 setData()) 设置元素拖动,要拖动的内容是什么;这里需要给要拖动的元素添加 ondragstart事件(元素开始用鼠标拖动...; //必须阻止对元素的默认处理方式,表示设置允许放置,默认行为是以链接形式打开 } 4、设置拖动元素的新位置(ondrop) 当我们松开鼠标后,表示我们要放置拖动的数据,这时会发生 drop 事件,...我们要规定拖动的元素需要放置的新位置,这里给div容器添加 ondrop 事件,如下代码: <div id="div1" ondrop="drop(event)" ondragover="allowDrop...该方法将返回在 setData() 方法中设置为相同类型的数据 元素数据 是元素的 id ("drag1") 把拖动图片元素 追加 到放置元素(目标元素)中 二、拖动一个图片到一个div容器中

1.5K20

H5拖放原生js将图片拖放另外一个元素

拖动某些元素,将一次触发下列事件:ondragstart、ondrag、ondragend。 按下鼠标键并开始移动鼠标,会在被拖放的元素触发dragstart事件。...触发dragstart事件后,随即会触发drag事件,而且在元素拖动期间会持续发送该事件。 拖动停止(无论是把元素放到了有效的放置目标,还是放到了无效的放置目标上),会触发dragend事件。...ondragenter、ondragover、ondragleave、ondrop 只要元素动到放置目标上,就会触发dragenter事件(类似于mouseover事件)。...紧随其后的是dragover事件,而且拖动的元素还在放置目标的范围内移动,就会持续触发该事件。...如果元素拖出了放置目标,dragover事件不再发生,但会触发dragleave事件(类似于mouseout事件)。 如果元素放到了放置目标中,则会触发drop事件而不是dragleave事件。

2K30

【HTML5】逐步分析如何实现拖放功能

,那么我们来了解一下 (1)拖动元素的事件 拖动元素所支持的事件如下表所示 事件 含义 dragstart 准备拖动拖动元素触发 drag 拖动的过程中触发(频繁触发) dragend 拖动结束触发...(2)目标元素的事件 在实现拖放功能的过程中,目标元素上的事件有如下三个 事件 含义 dragenter 拖放元素进入目标元素触发 dragover 拖放元素在目标元素触发(频繁触发) dragleave...拖动元素离开目标元素触发 drop 拖动元素放到了目标元素触发 这里我要详细讲解一下这三个事件的触发规则: dragenter事件与 mouseover 事件类似,那怎样才算拖放元素进入目标元素呢...,除非拖放事件结束或者拖放元素离开目标元素 dragleave事件 的其触发条件正好与 dragenter 事件相反,它是拖放元素离开目标元素触发,经过测试,离开目标元素的条件是:拖放元素一半以上的面积离开目标元素...drop事件 可以叫做放置目标事件,它是拖放元素放置到了目标元素触发

1.5K10

妙啊!纯 CSS 实现拼图游戏

CodePen Demo -- HTML draggable Demo 实现元素位置A到位置B的移动 OK,接下来的难点就在于,如何元素位置A移动到位置B。...通过 :active 伪类实现触发器 当然,只有上面的知识还是不够。 首先,元素的移动不是通过 hover 触发的,而是需要通过拖到到特定位置,并且释放鼠标的拖动效果,实现元素的移动。...我们需要通过事件的冒泡,开始拖拽 .g-box 元素本身的时候,才让我们的触发器显现,并且设置一个极为短暂的停留时间,这样让鼠标放下的一瞬间,触发元素的复位。 什么意思呢?...利用事件的冒泡,我们可以让元素在拖拽的过程中,让触发器显示,并且通过鼠标释放后立即触发触发器的 hover 事件,让元素位置 A,移动到位置 B,实在是妙不可言!...最后,我们只需要让触发器的位置,与我们希望元素去到的位置,保持一致,即可实现拼图的原理: 完整的单个元素从 A 点通过拖拽到移动到 B 点的 DEMO,你可以戳这里:CodePen Demo -- HTML

76820

不容忽视的 8 个 DOM API

capture 设置为 true ,在到达目标元素之前,事件会在捕获阶段被捕获。如果设置为 false 或者省略,则事件会在冒泡阶段处理,即在事件到达目标元素之后。...设置为 true ,表示事件监听器只会被触发一次,然后自动移除。这样就不需要使用 removeEventListener() 手动移除事件监听器了。...; } 在上面的例子中, handleClick 函数只会在按钮点击调用一次,这要归功于将 once 属性设置为 true 。这样就不需要手动删除事件监听器了。 2....当你想根据元素是否匹配特定选择器执行某些操作, matches() 方法非常有用。它消除了手动遍历DOM或使用复杂的CSS选择器匹配逻辑的需要。 5....(options); }; enterFullscreen(element); 在这个例子中,点击 element ,会调用 requestFullscreen() 函数,该函数尝试请求全屏模式

22520

【Java 进阶篇】HTML DOM 事件详解

当用户在网页上点击按钮、输入文本、鼠标移动到某个区域或执行其他互动操作,这些动作都可以触发事件。...每种事件都有其特定触发条件和行为。接下来,让我们逐一介绍不同类型的事件。 鼠标事件 点击事件(click) 点击事件是最常见的事件之一,它在用户点击(或触摸)页面上的元素触发。...自定义事件允许开发者在需要触发特定的事件,以满足应用程序的需求。...事件处理程序 事件处理程序是JavaScript函数,它们在特定事件发生执行。事件处理程序通常通过addEventListener方法将其附加到DOM元素上,以便在事件触发执行。...按钮点击,事件处理程序中的代码将被执行,这里我们简单地在控制台中打印了一条消息。

18720

低代码设计器的自由布局拖动的实现原理

,一类是拖动元素可以触发的: dragstart:鼠标点中元素并且开始移动触发 drag:拖拽过程中持续触发 dragend:拖拽结束松开鼠标触发 另一类是,是拖拽元素到某个目标元素,目标元素触发的...: dragenter:拖拽元素到目标上触发 dragover:拖动元素在目标元素中,持续触发 dragleave:离开目标元素触发 drop:拖放元素到了目标元素中松开鼠标触发 拖动放置行为 在拖动事件中...拖动元素在目标元素松手添加元素到画布,即将组件元数据添加到list2中,元素所对应的元数据记录也了这个组件在画面中的坐标位置。 然后在dragend事件中取听以上动作。...那拖动到画布中的组件又是如何实现通过拖动灵活的移动位置的呢?...同样,我们可以将画布中的组件添加mousedown事件,在事件中我们添加mousemove事件的监听,画布中的组件进行移动,我们实时的将该被移动元素所对应的元数据坐标进行更新。下面是代码的实现。

4K30

HTML5 拖放API与Vue.js实战

当用户将鼠标移到可拖动元素,拖动操作开始,然后将元素动到启用拖放的元素上。 再默认情况下,唯一可拖动的 HTML 元素是图像和链接。...从拖动到释放元素的这段时间中,元素拖放后,将会在被拖动的元素触发两个事件:dragstart 和 dragend。 现在还不能把可拖动元素拖放到任何地方。...document.querySelector('.section'); section.addEventListener('dragover', (e) => { e.preventDefault(); }); 将元素动到启用拖放的元素...,将会在启用拖放的元素触发以下事件: Dragenter:一个元素动到启用拖放的元素触发一次Dragover:只要元素仍然位于启用了 drop 的元素上,就会连续触发Drop:在把拖动的元素拖放到启用了拖放的元素上之后触发...在这三个事件中,第一个触发的是 dragenter *,*当可拖动元素拖到列中时会立即被触发

4.3K10

ReactPortals传送门

事件将被触发,而当我们再将鼠标移动到b元素,不会再次触发MouseEnter事件。...事件将被触发,而当我们再将鼠标移动到b元素,由于冒泡会再次触发绑定在a元素上的MouseOver事件,再从b元素移出到a元素时会再次触发MouseOver事件。...例如,如果有一个嵌套的DOM结构,此时我们在元素a上绑定了MouseOut事件,当鼠标从该元素内部移动到外部,MouseOut事件将被触发...避免重复触发: MouseOver和MouseOut事件在鼠标悬停在元素内部时会重复触发,当鼠标从一个元素动到其子元素,MouseOut事件会在父元素触发一次,然后在子元素触发一次,MouseOut...a上,会执行a元素绑定的事件,依次将鼠标移动到a、b、c的时候,同样会以此执行a、b、c的事件绑定函数,并且不会因为冒泡事件导致父元素事件的触发,当我们鼠标直接移动到c的时候,可以看到依旧是按照a、

19050

实现一个 EventEmitter 类

最常见的发布订阅模式莫过于给 DOM 绑定事件,点击一个按钮或者鼠标移动到某个元素上就会触发事件监听函数,然后弹出一个文本框或者改变元素样式。...; }); div 元素相当于一个订阅者,他会告诉浏览器(发布者),他要订阅一个 click 事件,这个事件会弹出一个提示框。当用户点击 div 元素,浏览器就会“发布”这个消息,告知用户。...EventEmitter 内部维护着一个事件监听函数集,内部的方法 emit 调用后就会触发相应的监听函数。...想对某个元素设置上自己定义的事件类型,如何做到?...触发事件 div.dispatchEvent(event); 上面代码,因为 color 事件可以冒泡,因此 div 元素也可以触发

1.3K10

web前端常见面试题

标准模式不包含,标准模式下可以通过设置 box-sizing: border-box 将标准盒模型转化成怪异模式下的盒模型。 怪异模式下,内容超出容器高度,会将容器拉伸,而不是溢出。...含义: 布尔值是 false (这也是默认值),表示向上冒泡触发事件; 布尔值是 true ,表示向下捕获触发事件; 不能冒泡的事件 有些事件是不会冒泡的。...比如: blur 元素失去焦点触发,focusout 事件也是失去焦点触发,但可以冒泡; focus 元素获取焦点触发; mouseenter 鼠标移动到元素上时会触发该事件,与之对应的是 mouseover...事件对象中的方法 stopPropagation() 阻止事件冒泡,设置后,点击该元素元素绑定的事件就不会再触发; preventDefault() 阻止默认事件的发生; stopImmediatePropagation...stopImmediatePropagation 方法,点击 div 元素,后面注册的 click 将不会被触发,而且还会阻止事件冒泡; 比如下面的例子,给 p 绑定多个 click 事件,在第二个事件函数中调用

2.3K20

拖拽牛逼,轻松实现一个自由拖拽的组件

,一类是拖动元素可以触发的: dragstart:鼠标点中元素并且开始移动触发 drag:拖拽过程中持续触发 dragend:拖拽结束松开鼠标触发 另一类是,是拖拽元素到某个目标元素,目标元素触发的...: dragenter:拖拽元素到目标上触发 dragover:拖动元素在目标元素中,持续触发 dragleave:离开目标元素触发 drop:拖放元素到了目标元素中松开鼠标触发 拖动放置行为 在拖动事件中...拖动元素在目标元素松手添加元素到画布,即将组件元数据添加到list2中,元素所对应的元数据记录也了这个组件在画面中的坐标位置。 然后在dragend事件中取听以上动作。...那拖动到画布中的组件又是如何实现通过拖动灵活的移动位置的呢?...同样,我们可以将画布中的组件添加mousedown事件,在事件中我们添加mousemove事件的监听,画布中的组件进行移动,我们实时的将该被移动元素所对应的元数据坐标进行更新。下面是代码的实现。

1.8K30

Web前端事件

ondragend 在拖动操作末端运行的脚本 ondragenter 元素元素已被拖动到有效拖放区域时运行的脚本。 ondragleave 元素离开有效拖放目标时运行的脚本。...ondragover 元素在有效拖放目标上正在被拖动时运行的脚本 ondragstart 在拖动操作开端运行的脚本 ondrop 元素正在被拖放时运行的脚本 onmousewheel 当鼠标滚轮正在被滚动时运行的脚本...onscroll 元素滚动条滚动时运行的脚本。...属性 描述 onkeydown 在用户按下按键触发。 onkeypress 在用户敲击按钮触发。 onkeyup 当用户释放按键触发。...onreset 表单中的重置按钮点击触发。HTML5 中不支持。 onselect 在元素中文本被选中后触发。 onsubmit 在提交表单触发

3.2K00

大白话详解Intersection Observer API

面对这种相交检测的任务,过去我们通常会使用Element.getBoundingClientRect()等方法来获取相关元素位置信息,并且还会用到事件监听。...因此官方就提出了Intersection Observer API,该 API 的出现就是为了高效的解决以下两大类问题: 某个元素是否可见,如: 图片懒加载——图片滚动到可见才进行加载 内容无限滚动...threshold --- 阈值,回调函数触发的条件。取值范围为 0.0-1.0,默认值为 0.0。 传入数值类型,只会触发一次。 传入数组类型,可触发多次。... IntersectionObserver 对象创建,就会被指定所监听的根元素、阀值等信息。一旦 IntersectionObserver 创建后就无法更改其指定信息。...监听对象的任何阈值越过时,都会触发回调函数。

13110

分享5个关于 Vue 的小知识,希望对你有所帮助(三)

1、使用Vue.js滚动到一个元素 我们可以通过为想要滚动到元素分配一个引用来使用Vue.js滚动到元素然后,我们可以在分配给引用的元素上调用scrollIntoView方法来滚动到元素。...3、如何在页面加载时调用Vue.js方法? 我们可以在页面加载通过在 beforeMount 组件钩子中调用Vue.js方法来调用它。...但是需要注意的是,此时组件还没有挂载到 DOM 上,因此对于一些需要获取 DOM 元素尺寸、位置等信息的操作应该放到 mounted 钩子函数中执行。...在这个阶段,我们可以访问到组件的 DOM 元素,并且执行一些需要访问 DOM 元素的操作,比如获取 DOM 元素的尺寸、位置等等。...4、在Vue.js中按下回车键执行某些操作 我们可以通过在执行某些操作的元素上添加 v-on:keyup 指令来在按下回车键执行某些操作。

18520

手写原生代码专题 | 图片拖拽效果(一)

) drag(dragstart 事件触发后,只要元素还在被拖动,就会持续触发 drag 事件,类似 mouseover,随着鼠标移动而不断触发) dragend(拖动元素的动作停止即松开鼠标,...放到目标位置或非目标位置,都会触发此事件) 以上三个事件,都是针对拖动元素的,并不会改变拖动元素的外观,如果你想改变外观需要自己定义。...除了这些事件,当你把元素动到一个有效的放置目标上,会依次触发以下事件: dragenter(只要被拖动元素进入目标位置上,就会立即触发) dragover(dragenter事件触发后,会立即触发此事件...,如果拖动元素,还在目标元素内持续拖动,会持续触发此事件) dragleave 或 drop(拖动的元素,放置在目标之外,dragover事件就会立即停止,触发dragleave事件;如果拖动元素放到了目标上...接下来,我们来定义拖动至目标位置元素触发的相关事件函数,进入目标元素触发 dragEnter:阻止默认的浏览器行为,为其添加进入目标位置元素样式 .hovered;在目标位置元素移动拖动元素

2.2K30
领券