
BigDataView
免费可视化模板,快速生成数据大屏
高性能轻量级可视化元素选择库,零依赖,像桌面端一样框选元素。
Viselect 是一个面向 Web 前端项目的可视化元素选择库。它解决的问题很具体:在网页中实现类似操作系统桌面的框选交互——按下鼠标、拖拽出一个矩形选区、覆盖范围内的元素被高亮选中。整个库以原生 TypeScript 编写,不依赖 jQuery、React 或任何其他第三方框架。
Viselect 的打包体积经过压缩后约为数 KB 级别,不引入任何运行时依赖。对于关注首屏加载性能或需要嵌入到组件库中的场景,这一特性降低了集成成本与潜在依赖冲突风险。
核心逻辑与 DOM 操作直接交互,不绑定特定前端框架。官方提供了原生 JavaScript 用法,同时社区可通过轻量封装接入 Vue、React 或 Svelte 等环境。这意味着同一套选择行为可以在不同技术栈之间保持一致。
Viselect 在交互细节上对齐桌面操作系统的常见行为:
Ctrl / Meta 键进行追加选择或取消选择库本身只负责选择逻辑与选区渲染,视觉样式通过 CSS 类名暴露给使用者。选区矩形、选中元素的高亮样式均可由项目自行定义,便于融入既有设计系统。
import Viselect from 'viselect';
const selection = new Viselect({
area: document.querySelector('.container'),
elements: () => Array.from(document.querySelectorAll('.selectable'))
});
selection.on('selected', (items) => {
console.log('当前选中的元素:', items);
});
初始化时需要传入一个作为交互边界的容器(area)和一个返回可选中元素列表的函数。事件系统覆盖 selected、beforestart、start、move、stop 等关键节点,便于在业务层做状态同步。
| 场景 | 说明 |
|---|---|
| 文件管理器界面 | 框选文件/文件夹,配合拖拽或批量操作 |
| 仪表板与看板 | 批量选中卡片进行排序、删除或分组 |
| 图片/素材库 | 多选素材后统一处理 |
| 数据表格增强 | 在自定义网格布局中实现区域选择 |
| 低代码编辑器 | 画布元素的多选与对齐操作 |
elements 返回的数量,避免选择计算开销过大。项目托管于 GitHub,采用 MIT 协议发布。可通过 npm 安装:
npm install viselect
也可通过 CDN 引入 UMD 构建版本直接用于浏览器环境。文档站点提供了完整的 API 说明与交互示例,适合在集成前评估其行为是否符合产品预期。







