vue-drag-resize 可拖动缩放元素的Vue组件

特征

  • 轻量级、无依赖性
  • 所有道具都是反应式的
  • 支持触摸事件
  • 将元素捕捉到自定义网格
  • 使用可拖动、可调整大小或同时使用两者
  • 定义用于调整大小的棒
  • 保存可调整大小的组件的纵横比
  • 限制大小和移动到父元素
  • 将拖动限制为垂直或水平轴

安装与基本用法

$ npm i -s vue-drag-resize

注册组件

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

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

使用组件

<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>

属性

isActive 是否处于激活状态

类型: Boolean
必需: false
默认值: false

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

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

preventActiveBehavior 是否禁止组件行为

类型: Boolean
必需: false
默认值: false

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

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

parentW 父级宽度

类型: Number
必需: false
默认值: 0

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

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

parentH 父级高度

类型: Number
必需: false
默认值: 0

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

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

parentScaleX 父级水平比例

类型: Number
必需: false
默认值: 1

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

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

parentScaleY 父级垂直比例

类型: Number
必需: false
默认值: 1

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

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

isDraggable 是否允许拖拽

类型: Boolean
必需: false
默认值: true

确定组件是否应可拖动。

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

isResizable 是否允许缩放

类型: Boolean
必需: false
默认值: true

确定组件是否应可缩放。

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

parentLimitation 是否超出父级元素

类型: Boolean
必需: false
默认值: false

将组件更改的范围限制为其父大小,即限制操作组件不能超出父级元素。

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

snapToGrid 是否等距离移动

类型: Boolean
必需: false
默认值: false

确定组件是否应按预定义的步骤移动和调整大小。

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

gridX X轴网格步长

类型: Number
必需: false
默认值: 50

定义水平轴的网格步长。组件的顶部和底部将捕捉到此步骤。

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

gridY Y轴网格步长

类型: Number
必需: false
默认值: 50

定义垂直轴的网格步长。组件的左侧和右侧将捕捉到此步骤。

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

aspectRatio 是否等比例缩放

类型: Boolean
必需: false
默认值: false

确定组件是否应保持其比例。
坑:定义了这个属性,发现重新设置宽高的时候出现了异常(新值比例不同于旧值),需要在重设宽高的时候把aspectRatio设置为false,再将其设置回去,才能保证新值的等比例

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

w 组件宽度

类型: Number || String
必需: false
默认值: 200

定义元件的初始高度。
该值可以是数字 >= 0 或字符串"auto"。如果设置为"auto",则初始高度值将等于组件中内容的高度。

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

h 组件高度

类型: Number || String
必需: false
默认值: 200

定义元件的初始高度。
该值可以是数字 >= 0 或字符串"auto"。如果设置为"auto",则初始高度值将等于组件中内容的高度。

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

minw 最小宽度

类型: Number
必需: false
默认值: 50

定义元件的最小宽度。
注意,不能设置为0,因为这个组件里面属性要求大于0。

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

minh 最小高度

类型: Number
必需: false
默认值: 50

定义组件的最小高度。
注意,不能设置为0,因为这个组件里面属性要求大于0。

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

x 定位水平距离

类型: Number
必需: false
默认值: 0

定义组件的初始x轴位置。

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

y 定位垂直距离

类型: Number
必需: false
默认值: 0

定义组件的初始y轴位置。

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

z 定位层次

类型: Number
必需: false
默认值: auto

定义组件的层次。
注意在元素激活的时候,z会被设置为最高的。

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

sticks 定义元素缩放的节点

类型: Array
必需: false
默认值: [‘tl’, ‘tm’, ‘tr’, ‘mr’, ‘br’, ‘bm’, ‘bl’, ‘ml’]

定义节点数组以限制元素大小调整。

  • 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']">

stickSize 定义节点的大小

类型: Number
必需: false
默认值: 8

定义节点的大小

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

axis 允许拖拽的方向

类型: String
必需: false
默认值: both

定义元素可拖动的轴(方向)。 可用值为x、y、both、none。

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

dragHandle

类型: String
必需: false

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

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

dragCancel

类型: String
必需: false

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

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

contentClass

类型: String
必需: false

定义一个类,该类应用于 div。

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

事件

clicked 组件点击事件

必需: false
参数: event handler

单击组件时调用。

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

activated 组件点击事件

参数: 无

单击组件时调用,以显示节点。

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

deactivated 点击组件外事件

参数: 无

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

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

resizing 缩放时事件

必需: false
参数: 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
}

组件调整大小时调用。

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

resizestop 缩放结束时

必需: false
参数: 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
}

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

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

dragging 拖拽时事件

必需: false
参数: 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
}

当拖动组件时调用。

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

dragstop 拖拽结束时事件

必需: false
参数: 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
}

当组件停止拖动时调用。

<vue-drag-resize @dragstop="onDragstop">
Vue-drag-resize是一个基于Vue.js的可拖拽和可调整大小的组件库。要实现达到临界值禁止缩放的效果,你可以按照以下步骤进行操作: 1. 首先,在Vue组件中引入Vue-drag-resize库,并注册该组件。 2. 在组件的模板中,使用Vue-drag-resize组件来包裹需要可调整大小的元素。 3. 在Vue-drag-resize组件上设置相应的属性和事件,以实现禁止缩放的效果。 具体实现步骤如下: 1. 安装Vue-drag-resize库: ``` npm install vue-drag-resize ``` 2. 在Vue组件中引入Vue-drag-resize库,并注册该组件: ```javascript import VueDragResize from 'vue-drag-resize'; export default { components: { VueDragResize, }, // ... } ``` 3. 在组件的模板中使用Vue-drag-resize组件来包裹需要可调整大小的元素: ```html <template> <div> <vue-drag-resize :w="200" :h="200" @resizing="handleResizing"> <!-- 可调整大小的元素内容 --> </vue-drag-resize> </div> </template> ``` 4. 在Vue-drag-resize组件上设置相应的属性和事件,以实现禁止缩放的效果。你可以通过设置`minW`和`minH`属性来限制元素的最小宽度和最小高度,当元素的宽度或高度达到临界值时,禁止继续缩放。同时,你可以通过监听`resizing`事件来实时监测元素的大小变化,并在达到临界值时进行处理: ```html <template> <div> <vue-drag-resize :w="200" :h="200" :minW="100" :minH="100" @resizing="handleResizing"> <!-- 可调整大小的元素内容 --> </vue-drag-resize> </div> </template> <script> export default { methods: { handleResizing(event) { const { width, height } = event; // 在达到临界值时进行处理 if (width <= 100 || height <= 100) { // 禁止继续缩放的逻辑处理 } }, }, }; </script> ``` 这样,当元素的宽度或高度达到临界值时,就会触发`resizing`事件,并在事件处理函数中进行相应的逻辑处理,从而实现禁止缩放的效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值