vue项目中实现元素的滚轮缩放以及拖拽效果

一、先看看效果

在这里插入图片描述

二、实现方法

1、实现思路: 使用vue-draggable-resizable组件实现;组件github地址: https://github.com/mauricius/vue-draggable-resizable
2、具体操作:

  • 1)npm安装
npm install --save vue-draggable-resizable
  • 2)全集引入和注册组件
import Vue from 'vue'
import VueDraggableResizable from 'vue-draggable-resizable'

// optionally import default styles
import 'vue-draggable-resizable/dist/VueDraggableResizable.css'
Vue.component('vue-draggable-resizable', VueDraggableResizable)
  • 3)页面中使用
<template>
  <div class="parent-con">
    <vue-draggable-resizable w="auto"
                             h="auto"
                             :resizable="false">
      <div style="transform: scale(1)"
           ref="dragCon"
           @wheel.prevent="handleWheel($event)">
        需要滚动缩放和拖拽的页面内容
      </div>
    </vue-draggable-resizable>
  </div>
</template>
methods: {
  // 监听滚轮滚动事件
  handleWheel (event) {
    let obj = this.$refs.dragCon;
    return this.tableZoom(obj, event);
  },
  tableZoom (obj, event) {
    // 设置元素缩放  这里使用transform: scale实现;你也可以使用 zoom 来实现
    let scale = obj.style.transform.replace('scale(', '').replace(')', '') * 100;
    scale += event.wheelDelta / 10;
    // 限制最小缩小到20%
    if (scale < 20) {
      scale = 20
    }
    // 限制最大可放大到3倍
    if (scale > 300) {
      scale = 300
    }
    // 设置元素transform
    if (scale > 0) {
      obj.style.transform = `scale(${scale / 100})`;
    }
    return false;
  },
}

这样就实现了

  • 5
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

慢步者_rambler

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值