每天学习一个vue插件(11)——vue-drag-resize

2,465 阅读1分钟

你生活在光亮里,你就觉得全世界都是光亮的

前言

1 介绍

常用属性 props

isActive

// 是否激活
//激活状态可拖拽和缩放
:isActive="true"

w/h

// 可拖拽容器宽高
// 默认100 * 100
:w="100"
:h="100"

parentLimitation

// 是否被父级容器限制
// 必须自定可拖拽区域宽高(w/h)
:parentLimitation="true"

常用事件 events

activated

//点击拖拽容器时触发
// 激活容器
@activated = “activated”

deactivated

// 点击拖拽容器以外区域时触发
// 置灰容器
@deactivated = “deactivated”

resizing

// 改变区域大小时触发
@resizing = “resizing”

dragging

// 拖拽容器时触发
@dragging = “dragging”

dragstop

// 拖拽结束时触发
@dragstop = “dragstop”

常用样式 style

active:before

// 取消默认外边框虚线
.vdr.active:before {
  displaynone;
}

2 使用

安装

npm install vue-drag-resize  --save

弹窗拖拽

<template>
  <div class="BaseDragResize">
    <VueDragResize
      :w="76"
      :h="40"
      :z="999"
      :isActive="isActive"
      :isResizable="true"
      class="BaseDragResize-drag"
      parentLimitation
      @resizing="resize"
      @dragging="resize"
      @dragstop="dragstop"
      @activated="isActive = true"
      @deactivated="isActive = false"
    >
      <h3>Hello World!</h3>
      <p>{{ top }} х {{ left }}</p>
      <p>{{ width }} х {{ height }}</p>
    </VueDragResize>
  </div>
</template>

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

export default {
  components: {
    VueDragResize
  },

  data() {
    return {
      isActive: false,
      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
    },

    dragstop(newRect) {
      console.log('dragstop', newRect)
    },
    deactivated(e) {
      console.log('deactivated', e)
    }
  }
}
</script>

<style lang="scss" scoped>
.BaseDragResize {
  position: relative;
  margin: auto;
  width: 500px;
  height: 500px;
  border: 1px solid salmon;
  &-drag {
    &.active:before {
      display: none;
    }
  }
}
</style>

3.注意

1.使用 parentLimitation 限制拖拽范围
2.h/w必须给固定值,否则限制范围有误

尾声

今晚的风有些轻柔,请不要关窗,我怕在梦里找不到你~

晚安 ^_^

参考链接

往期回顾