前端拖拽事件

本文详细介绍了HTML5中的拖拽功能,包括拖动元素的基本原理,涉及的事件(如dragstart,drag,dragend等),以及如何在源和目标元素间传输数据。通过实例展示了如何实现拖动一个元素到另一个元素的操作。
摘要由CSDN通过智能技术生成
概念

拖拽是页面中的元素从初始位置被拖动到新的位置的用户行为,如拖拽页面中的指定元素到另一个元素中。拖拽是HTML5中提供的新的交互方式,默认在超链接和图片上存在。可通过设置draggable属性为true使元素可以拖拽。

事件

初始位置元素的事件有三个,开始拖动dragstart,正在拖动drag,拖动结束dragend。

新位置元素的事件有四个,元素进入dragenter,元素离开dragleave,元素正在上方dragover,元素被放下drop。其中元素正在上方事件,需要阻止事件的默认操作,排斥拖拽元素被放下,e.preventDefault()。

数据传输

在源对象和目标对象的事件处理函数中,可以使用dataTransfer对象进行数据传输。例如通过event.dataTransfer.setData(format,data)设置数据,通过event.dataTransfer.getData(format)获取数据。

示例

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>拖拽操作drag</title>
    <style>
      #box {
        width: 300px;
        height: 200px;
        background-color: gray;
      }
    </style>
  </head>
  <body>
    <p class="p" draggable="true">Hello!</p>
    <div id="box"></div>
    <script>
      // 拖动p标签到box上方,松手之后移动到盒子里
      let p = document.querySelector("p");
      p.addEventListener("dragstart", function () {
        console.log("开始拖动");
      });
      p.addEventListener("drag", function () {
        console.log("正在拖动");
      });
      p.addEventListener("dragend", function () {
        console.log("拖动结束");
      });

      let box = document.getElementById("box");
      box.addEventListener("dragenter", () => {
        console.log("有元素进入");
      });
      box.addEventListener("dragleave", () => {
        console.log("元素离开");
      });

      box.addEventListener("dragover", (e) => {
        console.log("元素正在上方");
        e.preventDefault(); // 阻止默认拖拽元素被放下
      });
      box.addEventListener("drop", () => {
        console.log("元素被放下");
        box.appendChild(p);
      });
    </script>
  </body>
</html>

 

  • 5
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
前端拖拽组件生成页面是一种通过拖拽组件来生成动态页面的方法。这种方法可以帮助开发者快速搭建页面,提高开发效率。在实际应用中,可以使用一些第三方插件来实现这个功能,比如vuedraggable。 vuedraggable是一个Vue.js的插件,它提供了一种简单的方式来实现拖拽组件。你可以通过拖拽组件来生成页面。具体的实现步骤如下: 1. 首先,在你的项目中引入vuedraggable插件。你可以通过在项目中引入draggable组件来使用该插件。 2. 然后,根据你的需求,结合相关的文档和示例代码,来进行开发。你可以根据自己的需求来定义拖拽组件的样式、属性和行为。 3. 接下来,你可以将需要拖拽的组件放置在页面上,并配置好拖拽的规则和交互效果。你可以使用vuedraggable提供的一些API来实现拖拽组件的排序、限制拖拽的范围和处理拖拽事件。 4. 最后,你可以在浏览器中预览生成的动态页面,通过拖拽组件来实现页面的交互和布局调整。你可以根据需要对拖拽组件进行修改和优化,以满足项目的需求。 通过使用前端拖拽组件生成页面的方法,你可以更加灵活和高效地进行页面开发,同时提供了一种可视化的方式来搭建页面结构。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [vue使用vuedraggable拖拽组件,进行组件生成](https://blog.csdn.net/m0_59023970/article/details/129798365)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [Vue拖拽组件列表实现动态页面配置功能](https://download.csdn.net/download/weixin_38732463/12940620)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值