Vue中使用vue-drag-resize实现窗体可拖拽和随意缩放大小

场景

若依前后端分离版手把手教你本地搭建环境并运行项目:

若依前后端分离版手把手教你本地搭建环境并运行项目_ruoyi本地调式_霸道流氓气质的博客-CSDN博客

在上面的基础上,实现弹窗窗体可移动以及随意缩放大小。

效果如下

 

注:

博客:
https://blog.csdn.net/badao_liumang_qizhi 

实现

1、vue-drag-resize

https://github.com/kirillmurashov/vue-drag-resize

示例demo地址

Vue-drag-resize

2、安装

npm i -s vue-drag-resize

3、注册组件

import Vue from 'vue'
import VueDragResize from 'vue-drag-resize'

Vue.component('vue-drag-resize', VueDragResize)

4、组件使用

<template>
    <div id="app">
        <VueDragResize :isActive="true" :w="200" :h="200" v-on:resizing="resize" v-on:dragging="resize">
            <h3>Hello World!</h3>
            <p>{{ top }} х {{ left }} </p>
            <p>{{ width }} х {{ height }}</p>
        </VueDragResize>
    </div>
</template>

<script>
    import VueDragResize from 'vue-drag-resize';

    export default {
        name: 'app',

        components: {
            VueDragResize
        },

        data() {
            return {
                width: 0,
                height: 0,
                top: 0,
                left: 0
            }
        },

        methods: {
            resize(newRect) {
                this.width = newRect.width;
                this.height = newRect.height;
                this.top = newRect.top;
                this.left = newRect.left;
            }
        }
    }
</script>

5、属性

isActive

Type: Boolean
Required: false
Default: false

Determines whether the component should be active.

确定组件是否应处于活动状态。

<vue-drag-resize :isActive="true">

preventActiveBehavior

Type: Boolean
Required: false
Default: false

Disable behavior of the component by clicking on it and clicking outside the component's area (isActive: true / false).
If the prop is enabled, the component is oriented only to the specified.

通过单击组件并单击组件区域外部来禁用组件的行为(isActive:true / false)。
如果启用了prop,则组件仅面向指定的。

<vue-drag-resize :preventActiveBehavior="true">

parentW

Type: Number
Required: false
Default: 0

Define the initial width of the parent element. If not specified it calculated automatically.
With this parameter, you can set the bounding area for the component, and also it is used when resizing in real time.

定义父元素的初始宽度。 如果未指定,则自动计算。
使用此参数,您可以设置组件的边界区域,并在实时调整大小时使用它。

<vue-drag-resize :parentW="2000">

parentH

Type: Number
Required: false
Default: 0

Define the initial height of the parent element. If not specified it calculated automatically.
With this parameter, you can set the bounding area for the component, and also it is used when resizing in real time.

定义父元素的初始高度。 如果未指定,则自动计算。 使用此参数,您可以设置组件的边界区域,并在实时调整大小时使用它。

<vue-drag-resize :parentH="2000">

parentScaleX

Type: Number
Required: false
Default: 1

Define the initial horizontal scale or the parent element. Same value in parent's transform: scale() css definition.
The drag/resize and the sticks' sizes will computed with this value.

定义初始水平比例或父元素。父级的transform:scale()css定义中的值相同。
拖动/调整大小和杆的大小将使用该值计算。

<vue-drag-resize :parentScaleX="0.5">

parentScaleY

Type: Number
Required: false
Default: 1

Define the initial vertical scale or the parent element. Same value in parent's transform: scale() css definition.
The drag/resize and the sticks' sizes will computed with this value.

定义初始垂直比例或父元素。父级的transform:scale()css定义中的值相同。
拖动/调整大小和杆的大小将使用该值计算。

<vue-drag-resize :parentScaleY="0.5">

isDraggable

Type: Boolean
Required: false
Default: true

Determines whether the component should draggable.

确定组件是否应可拖动。

<vue-drag-resize :isDraggable="false">

isResizable

Type: Boolean
Required: false
Default: true

Determines whether the component should resize.

确定组件是否应调整大小。

<vue-drag-resize :isResizable="false">

parentLimitation

Type: Boolean
Required: false
Default: false

Limits the scope of the component's change to its parent size.

将组件更改的范围限制为其父大小。

<vue-drag-resize :parentLimitation="true">

snapToGrid

Type: Boolean
Required: false
Default: false

Determines whether the component should move and resize in predefined steps.

<vue-drag-resize :snapToGrid="true">

gridX

Type: Number
Required: false
Default: 50

Define the grid step size for the horizontal axis. Both sides of the component (left and right) will snap to this step.

<vue-drag-resize :snapToGrid="true" :gridX="20">

gridY

Type: Number
Required: false
Default: 50

Define the grid step size for the vertical axis. Both sides of the component (top and bottom) will snap to this step.

<vue-drag-resize :snapToGrid="true" :gridY="20">

aspectRatio

Type: Boolean
Required: false
Default: false

Determines whether the component should retain its proportions.

确定组件是否应保持其比例。

<vue-drag-resize :aspectRatio="false">

w

Type: Number|String
Required: false
Default: 200

Define the initial width of the component.
The value can either be a number >= 0 or the string 'auto'.
If set to 'auto', the initial width value will be equal to the width of the content within the component.

定义组件的初始宽度。

<vue-drag-resize :w="200">

h

Type: Number|String
Required: false
Default: 200

Define the initial height of the component.
The value can either be a number >= 0 or the string 'auto'.
If set to 'auto', the initial height value will be equal to the height of the content within the component.

定义组件的初始高度。

<vue-drag-resize :h="200">

minw

Type: Number
Required: false
Default: 50

Define the minimal width of the component.

定义组件的初始宽度。

<vue-drag-resize :minw="50">

minh

Type: Number
Required: false
Default: 50

Define the minimal height of the component.

定义组件的最小高度。

<vue-drag-resize :minh="50">

x

Type: Number
Required: false
Default: 0

Define the initial x position of the component.

定义组件的初始X位置。

<vue-drag-resize :x="0">

y

Type: Number
Required: false
Default: 0

Define the initial y position of the component.

定义组件的初始Y位置。

<vue-drag-resize :y="0">

z

Type: Number|String
Required: false
Default: auto

Define the zIndex of the component.

定义组件的zindex(层级)。

<vue-drag-resize :z="999">

stickSize

Type: Number
Required: false
Default 8

Define the sticks' size.

<vue-drag-resize :stickSize="12">

sticks

Type: Array
Required: false
Default: ['tl', 'tm', 'tr', 'mr', 'br', 'bm', 'bl', 'ml']

Define the array of handles to restrict the element resizing:

定义句柄数组以限制元素大小调整:

  • tl - Top left
  • tm - Top middle
  • tr - Top right
  • mr - Middle right
  • br - Bottom right
  • bm - Bottom middle
  • bl - Bottom left
  • ml - Middle left
<vue-drag-resize :sticks="['tm','bm','ml','mr']">

axis

Type: String
Required: false
Default: both

Define the axis on which the element is draggable. Available values are xyboth or none.

定义元素可拖动的轴。 可用值为xybothnone

<vue-drag-resize axis="x">

dragHandle

Type: String
Required: false

Defines the selector that should be used to drag the component.

定义应该用于拖动组件的选择器。

<vue-drag-resize dragHandle=".drag">

dragCancel

Type: String
Required: false

Defines a selector that should be used to prevent drag initialization.

定义应该用于防止拖动初始化的选择器。

<vue-drag-resize dragCancel=".drag">

contentClass

Type: String
Required: false

Defines a class that is applied on the div with the class vdr

<vue-drag-resize contentClass="box-shaddow">

Events

clicked

Required: false
Parameters: Original event handler

Called whenever the component gets clicked.

单击组件时调用。

<vue-drag-resize @clicked="onActivated">

activated

Required: false
Parameters: -

Called whenever the component gets clicked, in order to show handles.

单击组件时调用,以显示句柄。

<vue-drag-resize @activated="onActivated">

deactivated

Required: false
Parameters: -

Called whenever the user clicks anywhere outside the component, in order to deactivate it.

每当用户单击组件外部的任何位置时调用,以便将其停用。

<vue-drag-resize @deactivated="onDeactivated">

resizing

Required: false
Parameters: object

{
    left: Number, //the X position of the component
    top: Number, //the Y position of the component
    width: Number, //the width of the component
    height: Number //the height of the component
}

Called whenever the component gets resized.

每当组件调整大小时调用。

<vue-drag-resize @resizing="onResizing">

resizestop

Required: false
Parameters: object

{
    left: Number, //the X position of the component
    top: Number, //the Y position of the component
    width: Number, //the width of the component
    height: Number //the height of the component
}

Called whenever the component stops getting resized.

每当组件停止调整大小时调用。

<vue-drag-resize @resizestop="onResizstop">

dragging

Required: false
Parameters: object

{
    left: Number, //the X position of the component
    top: Number, //the Y position of the component
    width: Number, //the width of the component
    height: Number //the height of the component
}

Called whenever the component gets dragged.

每当拖动组件时调用。

<vue-drag-resize @dragging="onDragging">

dragstop

Required: false
Parameters: object

{
    left: Number, //the X position of the component
    top: Number, //the Y position of the component
    width: Number, //the width of the component
    height: Number //the height of the component
}

Called whenever the component stops getting dragged.

每当组件停止拖动时调用。

<vue-drag-resize @dragstop="onDragstop">

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/92042.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Go 基础篇】Go语言中的defer和recover:优雅处理错误

Go语言以其简洁、高效和强大的特性受到了开发者的热烈欢迎。在错误处理方面&#xff0c;Go语言提供了一种优雅的机制&#xff0c;即通过defer和recover组合来处理恐慌&#xff08;panic&#xff09;错误。本文将详细介绍Go语言中的defer和recover机制&#xff0c;探讨其工作原理…

vue页面中想在input框用户输入的参数后加单位的方法

<el-form-item label"金重" prop"weight"><el-input v-model"form.weight" placeholder"请输入金重"><template #append><div>g</div></template></el-input></el-form-item>

什么是异步编程?什么是回调地狱(callback hell)以及如何避免它?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 异步编程⭐ 回调地狱&#xff08;Callback Hell&#xff09;⭐ 如何避免回调地狱1. 使用Promise2. 使用async/await3. 模块化和分离 ⭐ 写在最后 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 记得点击上方或者右侧链接订…

8086汇编test指令学习

Test指令将两个操作数进行逻辑与运算&#xff0c;并根据运算结果设置相关的标志位。Test的两个操作数不会被改变。运算结果在设置过相关标记位后会被丢弃。 TEST AX,BX 与 AND AX,BX 命令有相同效果&#xff0c;只是Test指令不改变AX和BX的内容&#xff0c;而AND指令会把结果保…

入门超值型32位单片机MM32G0001开发板

灵动微入门级超值型MM32G0001系列MCU。采用48MHz ArmCortex-M0内核&#xff0c;提供16KB Flash和2KB SRAM&#xff0c;并提供丰富的外设资源。适用于多种多样的入门级32位MCU市场&#xff0c;可覆盖广泛的8/16位MCU升级需求。MM32G0001在各种温度范围内的闪存擦写寿命与数据保存…

跟随角色镜头时,解决地图黑线/白线缝隙的三种方案

下面一共三个解决方案&#xff0c;这里我推荐第二个方案解决&#xff0c;因为够快速和简单。 现象&#xff1a; 解决方案一&#xff1a; 参考【Unity2D】去除地图中的黑线_unity选中后有线_香菇CST的博客-CSDN博客&#xff0c;博主解释是因为抗锯齿采样导致的问题。 具体到这…

YOLOv5算法改进(7)— 添加SimAM注意力机制

前言&#xff1a;Hello大家好&#xff0c;我是小哥谈。SimAM&#xff08;Similarity-based Attention Mechanism&#xff09;是一种基于相似度的注意力机制&#xff0c;它的原理是通过计算查询向量与每个键向量之间的相似度&#xff0c;从而确定每个键向量对于查询向量的重要性…

nrm管理源仓库及发布私人npm包

使用nrm管理源及切换源仓库 1.安装nrm源管理器 npm install nrm -g2.查看目前现有的源仓库 通过 nrm ls 查看现有的源 nrm ls 输出&#xff1a;这是目前现有的源 3.切换不同的源 可以通过 nrm use xxx&#xff08;源仓库名&#xff09;来切换不同的源地址 nrm use taobao…

代码随想录算法训练营第四十七天|LeetCode 382,115

目录 LeetCode 392.判断子序列 动态规划五步曲&#xff1a; 1.确定dp[i][j]的含义 2.找出递推公式 3.初始化dp数组 4.确定遍历顺序 5.打印dp数组 LeetCode 115.不同的子序列 动态规划五步曲&#xff1a; 1.确定dp[i][j]的含义 2.找出递推公式 3.初始化dp数组 4.确定遍历顺序 …

在 WSL2 中使用 NVIDIA Docker 进行全栈开发和深度学习 TensorFlow pytorch GPU 加速

WSL2使用NVIDIA Docker进行全栈开发和深度学习 1. 前置条件 1.1. 安装系统 Windows 10 版本 2004 及更高版本&#xff08;内部版本 19041 及更高版本&#xff09;或 Windows 11 跳过 1.2. 处理好网络环境 安装过程中需要访问国际网络&#xff0c;自行处理好。建议开启 tu…

【附安装】R语言4.3.0安装教程

软件下载 软件&#xff1a;R语言版本&#xff1a;4.3.0语言&#xff1a;简体中文大小&#xff1a;77.74M安装环境&#xff1a;Win7及以上版本&#xff0c;64位操作系统硬件要求&#xff1a;CPU2.0GHz 内存4G(或更高&#xff09;下载通道①百度网盘丨64位下载链接&#xff1a;h…

【Jenkins】rpm方式安装Jenkins(2.401,jdk版本17)

目录 【Jenkins】rpm方式安装Jenkins 1、主机初始化 2、软件要求 RPM包安装的内容 配置文件说明 3、web操作 【Jenkins】rpm方式安装Jenkins 1、主机初始化 [rootlocalhost ~]# hostname jenkins[rootlocalhost ~]# bash[rootjenkins ~]# systemctl stop firewalld[roo…

爬虫实战之使用 Python 的 Scrapy 库开发网络爬虫详解

关键词 - Python, Scrapy, 网络爬虫 在信息爆炸时代&#xff0c;我们每天都要面对海量的数据和信息。有时候我们需要从互联网上获取特定的数据来进行分析和应用。今天我将向大家介绍如何使用 Python 的 Scrapy 库进行网络爬虫&#xff0c;获取所需数据。 1. Scrapy 简介 1.1 …

微服务学习资料

文章目录 参考资料一. 微服务概述1. CAP理论2. BASE理论3. SpringBoot 与 SpringCloud对比 二. 服务注册&#xff1a;Zookeeper,Eureka,Nacos,Consul1. Nacos两种健康检查方式&#xff1f;2. nacos中负责负载均衡底层是如何实现的3. Nacos原理4. 临时实例和持久化(非临时)实例 …

2023.8 - java - 多态

多态是同一个行为具有多个不同表现形式或形态的能力。 多态就是同一个接口&#xff0c;使用不同的实例而执行不同操作&#xff0c; 多态的优点 1. 可替换性2 可扩充性3. 接口性、灵活性、简化性4. 消除类型之间的耦合关系 多态存在的三个必要条件 继承重写父类引用指向子类…

基于SpringBoot实现MySQL与Redis的数据最终一致性

问题场景 在并发场景下&#xff0c;MySQL和Redis之间的数据不一致性可能成为一个突出问题。这种不一致性可能由网络延迟、并发写入冲突以及异常情况处理等因素引起&#xff0c;导致MySQL和Redis中的数据在某些时间点不同步或出现不一致的情况。数据一致性问题的级别可以分为三…

(java) 进程调度

目录 进程 首先我们要了解一下什么是进程&#xff1f; 那如何管理进程&#xff1f; PCB中比较重要的属性 进程调度 为什么要进行进程调度&#xff1f; 状态 优先级 上下文 拓展介绍一下寄存器 记账信息 进程 首先我们要了解一下什么是进程&#xff1f; 简单来说…

ubuntu 22.04 LTS openai triton 安装

第一种方法&#xff1a; pip install triton 第二种方法&#xff0c;安装最新的版本&#xff1a; pip install -U --index-url https://aiinfra.pkgs.visualstudio.com/PublicPackages/_packaging/Triton-Nightly/pypi/simple/ triton-nightly 第三种方法&#xff1a; git c…

优化器调整策略

损失函数的作用是衡量模型输出与真实标签的差异。当我们有了这个loss之后&#xff0c;我们就可以通过反向传播机制得到参数的梯度&#xff0c;那么我们如何利用这个梯度进行更新参数使得模型的loss逐渐的降低呢&#xff1f; 优化器的作用 Pytorch的优化器&#xff1a; 管理并…

echarts实现图表标签(label)可拖拽,以及保存拖拽后的位置

需求背景&#xff1a; 当echarts图表中像素点非常多&#xff0c;或者有像素点重合的时候&#xff0c;标签就会被覆盖或者重叠。为了解决这个问题&#xff0c;让用户体验更加友好&#xff0c;于是就实现了对label进行拖拽。用户可以把label拖拽到任何他想要的位置&#xff0c;并…