编程 Dragula.js——一款神奇的 JavaScript 开源拖放库

2024-11-19 01:16:55 +0800 CST views 650

Dragula.js——一款神奇的 JavaScript 开源拖放库

提升用户交互的绝佳选择

1. Dragula.js 是什么?

Dragula.js 是一个专为开发者设计的 JavaScript 拖放库,它简化了实现拖放功能的过程,使应用的用户交互变得更为流畅直观。由 Google 软件工程师 Matthew Rothenberg 开发,Dragula.js 的主要特点包括:

  • 简洁的 API:让拖放操作实现变得十分容易。
  • 轻量级:库体积小,几乎不影响页面加载速度。
  • 模块化:可以轻松集成到 React、Angular 等前端框架中。
  • 响应式设计:支持不同屏幕设备的适配。
  • 高度自定义:开发者可以自定义拖放行为与样式。

2. 快速开始

安装

在项目中,可以通过 npm 或 yarn 安装:

npm install dragula -S
# 或
yarn add dragula

如果未使用包管理工具,也可以从 Github 仓库 中下载 dist 文件夹中的资源并手动引入。记得在 HTML 的 <body> 中引入 JS 和 CSS 文件。

示例

首先,引入 Dragula 文件:

<link rel="stylesheet" href="./dragula/dist/dragula.css" />
<script src="./dragula/dist/dragula.js"></script>

定义两个可拖动的容器:

<div class="wrapper">
  <div id="left-defaults" class="container">
    <div>1. 可以在两个列表之间移动元素</div>
    <div>2. 可以移动到任意位置</div>
    <div>3. 任何元素都可以被移动</div>
  </div>
  <div id="right-defaults" class="container">
    <div>A. 你可以在同一个容器中移动元素,改变它的位置</div>
    <div>B. 这是默认用例。</div>
    <div>C. 提供很多配置项</div>
  </div>
</div>

images
通过调用 dragula 函数即可实现容器之间的拖动功能:

dragula([$('left-defaults'), $('right-defaults')]);

function $(id) {
  return document.getElementById(id);
}

实现效果

用户可以自由拖动容器中的元素,将 left 容器中的元素拖到 right,反之亦然。

3. 更多配置

Dragula 提供了丰富的配置选项,下面是一个带有自定义选项的实例:

dragula(containers, {
  isContainer: function (el) {
    return false;  // 仅考虑指定的容器
  },
  moves: function (el, source, handle, sibling) {
    return true;  // 所有元素均可拖动
  },
  accepts: function (el, target, source, sibling) {
    return true;  // 所有容器均可接受元素
  },
  invalid: function (el, handle) {
    return false;  // 不阻止任何元素的拖动
  },
  direction: 'vertical',  // 纵向拖动
  copy: false,  // 不复制元素
  revertOnSpill: false,  // 溢出时不恢复位置
  removeOnSpill: false,  // 溢出时不移除元素
  mirrorContainer: document.body,  // 设置镜像元素的容器
  ignoreInputTextSelection: true  // 允许文本选择
});

4. 总结

Dragula.js 是一个轻量级、高性能的拖放库,它为现代网页应用带来了简洁而强大的拖拽体验。如果你正在寻找一种简单高效的拖放解决方案,不妨尝试一下 Dragula.js。

祝好!


引用链接

[1] Github Star: 21.9k: Dragula.js - Github

[2] 官网: Dragula.js 官网

复制全文 生成海报 JavaScript库 用户体验 前端开发 开源

推荐文章

Rust 并发执行异步操作
2024-11-19 08:16:42 +0800 CST
解决python “No module named pip”
2024-11-18 11:49:18 +0800 CST
API 管理系统售卖系统
2024-11-19 08:54:18 +0800 CST
Vue3中如何实现响应式数据?
2024-11-18 10:15:48 +0800 CST
Golang 随机公平库 satmihir/fair
2024-11-19 03:28:37 +0800 CST
手机导航效果
2024-11-19 07:53:16 +0800 CST
php 统一接受回调的方案
2024-11-19 03:21:07 +0800 CST
Rust 并发执行异步操作
2024-11-18 13:32:18 +0800 CST
四舍五入五成双
2024-11-17 05:01:29 +0800 CST
纯CSS绘制iPhoneX的外观
2024-11-19 06:39:43 +0800 CST
Vue3中如何进行异步组件的加载?
2024-11-17 04:29:53 +0800 CST
你可能不知道的 18 个前端技巧
2025-06-12 13:15:26 +0800 CST
使用Ollama部署本地大模型
2024-11-19 10:00:55 +0800 CST
404错误页面的HTML代码
2024-11-19 06:55:51 +0800 CST
CSS Grid 和 Flexbox 的主要区别
2024-11-18 23:09:50 +0800 CST
在 Docker 中部署 Vue 开发环境
2024-11-18 15:04:41 +0800 CST
如何在 Linux 系统上安装字体
2025-02-27 09:23:03 +0800 CST
PHP 唯一卡号生成
2024-11-18 21:24:12 +0800 CST
Go 协程上下文切换的代价
2024-11-19 09:32:28 +0800 CST
Web浏览器的定时器问题思考
2024-11-18 22:19:55 +0800 CST
程序员茄子在线接单