Vue 3 工具库 - 完全开源

强大的拖拽旋转组件

16点拖拽旋转 · 8方向调整大小

draggable-resizable-rotatable 是一款功能强大的 Vue 3 可拖拽、可调整大小、可旋转工具库。 支持16点拖拽旋转、8方向调整元素大小、圆角独立调整、方向键微调等丰富功能, 专为画布编辑器、设计工具、交互式图表等应用场景打造。

16+
控制点
8
调整方向
360°
自由旋转
100%
TypeScript

丰富的拖拽旋转功能

支持拖拽、调整大小、旋转、圆角调整等16种控制点,满足各种复杂场景需求

🖱️

自由拖拽

支持元素自由拖拽,可限制在指定范围内移动。提供边界限制功能,确保元素不会移出画布或父容器。

📐

8方向调整大小

支持8个方向调整元素尺寸:上下左右四边 + 四角。可设置最小/最大宽高限制,保持合理的元素大小。

🔄

16点拖拽旋转

独特的16点拖拽旋转控制,通过拖拽控制点实现精确旋转。支持顺时针/逆时针旋转,精度可调。

📏

圆角独立调整

支持单独调整元素圆角,可显示圆角控制器。四个角可以独立调整,创造多样化的边框效果。

🔒

锁定/解锁功能

支持禁用和重新启用元素操作。可锁定宽高比、锁定位置、锁定旋转,提供灵活的控制能力。

⌨️

方向键微调

支持使用键盘方向键微调元素位置。按住Shift可加速移动,精确到像素级别的位置调整。

📍

坐标实时显示

实时显示元素坐标位置和尺寸信息。方便设计师精确了解元素位置,提高工作效率。

🎯

边界限制

支持限制元素在画布或父容器范围内移动。开启边界限制后,元素将无法移出指定区域。

🔒

宽高比锁定

支持锁定元素宽高比,调整大小时自动保持原始比例。特别适合图片、图标等需要保持比例的元素。

📝

编辑模式

支持编辑模式,一键禁用拖拽和方向键控制。适合用于预览状态,防止误操作。

📦

Z-index层级控制

支持设置元素层级,管理堆叠顺序。通过z-index属性自由控制元素的上下覆盖关系。

🎨

网格吸附

支持元素吸附对齐,网格吸附功能让元素自动对齐到网格线,保持画布整洁有序。

交互演示

体验拖拽、调整大小、旋转的流畅交互。我们的16点拖拽旋转系统让您可以轻松操控元素的每一个细节。

  • 拖拽元素移动位置
  • 8个方向调整元素大小
  • 16个控制点实现精确旋转
  • 独立调整四个角的圆角
  • 实时显示坐标和尺寸信息
  • 支持键盘方向键微调
在Gitee上查看源码
拖拽我!

基础使用

简单几步,快速集成拖拽旋转功能到您的Vue 3项目

Vue组件用法

使用DraggableResizableRotatable组件,传入控制器配置和舞台配置,即可实现完整的拖拽、调整大小、旋转功能。

Vue Template
<template>
  <DraggableResizableRotatable
    :controller="draggableItem"
    :stage="stageConfig"
    :active="isSelected"
    @selected="handleSelect"
    @drag-end="handleDragEnd"
  >
    <div class="content">可拖拽内容</div>
  </DraggableResizableRotatable>
</template>

配置说明

通过IDraggable接口配置元素的属性,通过IStage接口配置舞台/画布的属性。详细配置选项请参考API文档。

Vue Script
const draggableItem = ref<IDraggable>({
  x: 100,
  y: 100,
  w: 200,
  h: 150,
  rotate: 0,
  resizable: true,
  rotatable: true,
  draggable: true,
  minWidth: 50,
  minHeight: 50,
  showIndicator: true,
  allowArrowKeys: true,
});

API文档

完整的类型定义和配置选项说明

IDraggable 属性

属性名 类型 默认值 说明
x number - 元素左上角X坐标
y number - 元素左上角Y坐标
w number - 元素宽度
h number - 元素高度
rotate number 0 旋转角度(度)
draggable boolean true 是否允许拖拽
resizable boolean false 是否允许调整大小
rotatable boolean false 是否允许旋转
minWidth number 10 最小宽度
minHeight number 10 最小高度
lockAspectRatio boolean false 是否锁定宽高比
limitBoundaries boolean - 是否限制在边界内
showIndicator boolean false 是否显示坐标指示器
allowArrowKeys boolean false 是否允许方向键控制
editMode boolean false 编辑模式(禁用拖拽和方向键)
disabled boolean false 是否完全禁用

IStage 属性

属性名 类型 说明
scale number 画布缩放比例
x number 舞台X轴偏移量
y number 舞台Y轴偏移量
width number 舞台宽度
height number 舞台高度

功能对比

了解draggable-resizable-rotatable与其他类似库的区别

功能特性 draggable-resizable-rotatable 其他拖拽库
拖拽功能 支持 支持
调整大小 8方向 部分支持
旋转功能 支持 部分支持
16点拖拽旋转 独有 不支持
圆角独立调整 支持 不支持
方向键微调 支持 部分支持
坐标实时显示 支持 不支持
宽高比锁定 支持 支持
边界限制 支持 支持
TypeScript支持 100% 部分支持