自由拖拽组件 vue3-draggable-resizable

1 篇文章 0 订阅
1 篇文章 0 订阅


前言

最近在做一个大屏项目,对这种自由拖拽有点兴趣,找了一个适配vue3的插件玩玩,不过这个插件似乎没什么热度
本身文档其实已经挺详细了,这里自己记录一下

git地址 vue3-draggable-resizable


1.安装

npm i vue3-draggable-resizable

2.使用

<template>
    <DraggableContainer :referenceLineColor="'white'">//父容器
      <Vue3DraggableResizable
        v-for="item in draggableList"
        :initW="item.initW"//初始宽度
        :initH="item.initH"//初始高度
        v-model:x="item.x"
        v-model:y="item.y"
        v-model:w="item.width"
        v-model:h="item.height"
        v-model:active="item.active"//是否激活
        :draggable="!item.isLock"//是否可拖动
        :resizable="!item.isLock"//是否可改变大小
        :parent="true"//能否超出父容器
        :class="item.type"
        @resize-end="resizeEndHandle(item)"//拖拽结束执行
      >
      	//需要拖动的组件
        <component
          :is="item.type"
          :style="{ width: item.width, height: item.height }"
          v-if="!item.hidden"
        ></component>
      </Vue3DraggableResizable>
    </DraggableContainer>
</template>
<script setup lang="ts">
import { DraggableContainer } from 'vue3-draggable-resizable';
import Vue3DraggableResizable from 'vue3-draggable-resizable';
//default styles
import 'vue3-draggable-resizable/dist/Vue3DraggableResizable.css';
const draggableList = reactive([
  {
    name: '天气预报',
    id: 1,
    isLock: false,
    type: weather,
    active: false,
    width: 225,
    height: 270,
    minWidth: 225,
    minHeight: 270,
    x: 0,
    y: 0,
    initW: 225,
    initH: 270,
    initX: 0,
    initY: 0,
    toolsShow: false
  },
  {
    name: '3d地球',
    id: 5,
    type: earth3d,
    active: false,
    isLock: false,
    reload: true,
    width: 400,
    height: 400,
    minWidth: 300,
    minHeight: 300,
    x: 473,
    y: 0,
    initW: 400,
    initH: 400,
    initX: 473,
    initY: 0,
    toolsShow: true
  }
] as any);
</script>

3.实现的一个小demo

在这里插入图片描述

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
vue3-draggable-resizable 是基于 Vue3 的一个组件库,主要实现了可拖拽和可缩放的效果。该组件库的使用和配置都非常简单,只需要按照其文档中提供的 API 进行定义和使用即可。 该组件库的主要特点是: 1. 可以拖拽、缩放和进行各种交互。 2. 可以自定义样式和控制器。 3. 提供了事件钩子,可以方便地处理各种事件。 4. 支持触摸屏、鼠标和键盘等多种方式。 该组件库的使用非常灵活,主要分为两步: 1. 安装和引入组件库。 ```bash npm install vue3-draggable-resizable ``` 2. 在需要使用的页面中定义组件并传入参数。 ```vue <template> <draggable-resizable v-model="size" :w="200" :h="200" :min-w="100" :min-h="100" > <p>可拖拽、缩放、交互</p> </draggable-resizable> </template> <script> import DraggableResizable from 'vue3-draggable-resizable' export default { components: { DraggableResizable }, data() { return { size: { x: 0, y: 0, w: 200, h: 200 } } } } </script> ``` 从上面的代码中我们可以看出,在 template 中定义了一个 draggable-resizable组件,并传入了需要的参数。其中,v-model 绑定了 size 对象,将其作为组件的实际大小,并定义了组件的最小大小和初始大小。 在实际开发中,我们可以自定义组件的样式、事件和控制器等,按照自己的需要来进行定义和使用。JSGlobal对象也可以按照该组件库的例子进行自定义拖拽和切换等交互效果。 综上所述,vue3-draggable-resizable 是一个非常实用和灵活的 Vue3 组件库,可以轻松实现拖拽和缩放等常见的交互效果,并且提供了丰富的 API 可以满足各种需求。在实际项目中非常值得使用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值