返回博客

使用纯原生 JavaScript 创建拖放元素

使用纯原生 JavaScript 创建拖放元素

JavaScript 是最受欢迎的编程语言之一,拥有 24 个以上的框架和大约 84 个库。它是唯一一种所有浏览器都原生支持的编程语言。此外,该语言支持动态类型,非常适合渲染和动画。您可以利用 JavaScript 在前端添加交互行为、控制后端、创建 Web 和移动应用程序等。为任何网站添加效果并使其可定制的选项,使该语言成为全球开发人员的最爱。

在本指南中,我们将 引导您完成使用纯原生 JavaScript(Vanilla JavaScript)创建拖放元素的步骤。此外,我们还将更进一步,使用 HTML 拖放 API 事件处理程序构建一个“早晨日程规划”(Morning Scheduler)应用程序。

前提条件

要学习本教程,您必须具备:

  • JavaScript 基础知识。
  • HTMLCSS 有所了解将是一个很大的优势。

步骤 1:创建新项目

首先创建一个包含两个子元素的容器。我们将使用第一个子元素进行拖动,使用第二个子元素来存储拖动的元素。

注意: 在本教程中,我们将把容器视为保存所有拖动元素的存储库。简单来说,从第一个子元素拖动的所有元素都将被放置到第二个子元素中。

接下来,使用 cd 命令将目录更改为 drag-and-drop-demo  文件夹:

步骤 2:初始设置

在本教程中,我们将创建 HTML、CSS 和 JavaScript 文件并连接它们。首先,将这些文件分别命名为 index.html, styles.cssscripts.js 文件。

接下来,在 “My Morning Planner” in the index.html 文件中添加标题:

接下来,链接 CSS,并将 JavaScript 添加到 HTML:

现在,我们将创建一个初始容器,并添加我们想要拖放的元素。确保设置属性 draggable="true", 并添加您想要拖放的项目列表。

接下来,在 <body> 标签中添加以下代码行:

保存并关闭 index.html 文件。之后,尝试在浏览器中打开 index.html 文件,您将看到一个页面打开:

接下来,让我们使用 CSS 为我们的 index.html 设置样式,使其看起来更美观。

第 3 步:使用 CSS 设置样式

接下来,为我们在 index.html 文件中包含的所有元素添加样式:

尝试在浏览器中打开 index.html 文件并查看输出:

Creating Drag and Drop Elements with Pure, Vanilla JavaScript 1

虽然我们已经完成了结构构建并添加了样式,但这些元素仍然是静态的。这意味着,在为它们添加动态功能之前,我们无法移动或滚动这些元素。在下一步中,我们将引入 JavaScript 和动态行为。

第 4 步:引入 JavaScript

在这一步中,我们将引入 JavaScript 并使所有拖拽元素生效。在 JS 文件中,设置我们需要的元素。让我们定义 draggablecontainers 来分别进行拖放元素。

scripts.js 文件中添加这两行代码:

接下来,设置所有的事件监听器。首先添加 dragstart 元素作为第一个事件监听器来 add 类列表。类似地,添加 dragend 元素作为第二个事件监听器来 remove 类列表。

在你的 EventListeners 中附加以下 scripts.js 文件中:

接下来,添加 dragover EventListener 用于悬停和移动我们的元素。使用 draggable 元素,通过 querySelector 获取,然后将该拖拽元素追加到当前容器中:

默认情况下,禁用在元素内部放置。使用 e.preventDefault 来启用它:

接下来,创建一个元素来确定鼠标位置。首先创建一个函数 getDragAfterElement,它将接受两个参数。第一个是 container,第二个参数 y 将处理鼠标的 Y 轴位置。现在,使用 querySelectorAll 函数来获取我们的拖拽元素。定义一个 draggableElements 指向容器内的所有拖拽元素:

接下来,调用一个 reduce 函数,该函数将循环遍历拖拽元素列表,并确定鼠标光标后的单个元素。接下来, return 该 reduce 函数,通过将第一个元素添加为 closest,第二个元素添加为 child。此外,使 offset 相等并添加条件。

在以下文件中添加以下代码行: scripts.js 文件:

在最后一部分中,我们将设置条件并检查 AfterElements。检查 AfterElements,使用 if-else 条件,如果它被设置为 null,使用 appendChild 在列表末尾追加一个子元素。否则,将元素 draggableafterElement 作为参数添加到 insertBefore 函数中。

将其包含在 scripts.js 文件中:

现在我们已经完成了必要的设置。打开浏览器并运行 index.html 。您将在浏览器中看到页面 “My Morning Scheduler” ,其中包含拖放选项。中间的白线起到了桥梁的作用,用于区分已完成的任务和待完成的任务:

结论

拖放是现代网站中一个非常棒的选择。在本指南中,我们使用了几个事件处理程序,以便初学者轻松学习。总共有八个事件处理程序,我们鼓励您在进阶时使用它们。一旦您熟练掌握了本教程中使用的函数和代码,就可以深入研究 JavaScript 主题,例如 jQuery 并开始探索。您还可以尝试使用 JavaScript 日期和时间功能 构建待办事项应用、每周进度跟踪器以及其他应用,这些都基于您刚刚学到的概念。

要进一步了解有关 JavaScript 和 Web 开发主题的更多信息,请查看来自 我们博客的资源:

祝您计算愉快!

author

Shreyas Patil

作者 · CloudSigma

Preslav Dobrev 是 CloudSigma 的创意设计师,专注于通过传统和创新营销渠道打造一致的企业形象。他擅长将艺术愿景与战略营销相融合,创造具有影响力的品牌叙事。

评论

暂无评论。发表第一条评论吧。