当前位置: 代码网 > it编程>前端脚本>Vue.js > vue3实现图片缩放拖拽功能的示例代码

vue3实现图片缩放拖拽功能的示例代码

2024年05月26日 Vue.js 我要评论
前言因为需要实现图片拖拽,缩放的功能,项目是vue3的所以找到这个组件,很简洁,api文档描述的也清楚,能够快速3分钟内搞完一个功能缩放拖拽组件(v3-drag-zoom)v3-drag-zoom是基

前言

因为需要实现图片拖拽,缩放的功能,项目是vue3的所以找到这个组件,很简洁,api文档描述的也清楚,能够快速3分钟内搞完一个功能

缩放拖拽组件(v3-drag-zoom)

v3-drag-zoom 是基于 vue3 开发的一个缩放拖拽组件,方便开发者快速实现缩放拖拽功能。

效果类似地图的缩放与拖拽,但是不同的是,v3-drag-zoom 可以缩放任意元素,而不仅仅是地图。

使用场景:

  • 地图缩放与拖拽
  • 图片缩放与拖拽
  • 任意元素缩放与拖拽
  • 其他任意需要缩放与拖拽的场景

安装

使用以下命令安装 v3-drag-zoom

bash

npm install v3-drag-zoom
# 或
yarn add v3-drag-zoom

导入组件

全局导入

在 main.js 中全局引入 v3-drag-zoom

import {createapp} from "vue";
import app from "./app.vue";
// v3-drag-zoom 组件
import v3dragzoom from "v3-drag-zoom";
// v3-drag-zoom 全局样式(必须导入,否则无法正常使用)
import "v3-drag-zoom/dist/style.css";

createapp(app).use(v3dragzoom).mount("#app");

按需导入

在需要的组件中导入 v3-drag-zoom

<script setup lang="ts">
  import {v3dragzoomcontainer} from "v3-drag-zoom";
</script>

<template>
  <v3-drag-zoom-container>
    <div>需要缩放与拖拽的元素</div>
  </v3-drag-zoom-container>
</template>

由于v3-drag-zoom 全局导入也就只有 2 个组件,因此建议全局导入。

基本使用

使用 v3-drag-zoom 组件包裹需要缩放与拖拽的元素即可。

如果 v3-drag-zoom 内部存在 img 元素,则会自动等待所有元素加载完毕后初始化,因此不需要手动等待图片加载完毕后再初始化。

<script setup lang="ts"></script>

<template>
  <v3-drag-zoom-container style="width: 600px; height: 400px; background-color: #ccc">
    <div
      class="flex-column flex-same"
      style="background-color: darkred; height: 500px; width: 900px"
    >
      <div class="flex-grow flex-horiz flex-same" v-for="i in 10">
        <div class="border-box bca-border" v-for="i in 10"></div>
      </div>
    </div>
  </v3-drag-zoom-container>
</template>

api参数

v3-drag-zoom-container

props

参数名类型默认值说明
alignstringcontain内容对齐方式,可选值有 auto、 containcover
autoresizebooleantrue是否自动重置尺寸,当容器尺寸为百分比的时候,会根据父容器变化而自动变化
followpointerbooleantrue缩放时是否跟随鼠标
maxzoomfloat100最大缩放倍数
minzoomfloat0.01最小缩放倍数
zoomfactorfloat0.1鼠标滚轮一次的缩放比例
loadingbooleanfalse是否加载中
animatedurationnumber200缩放时候的过度动画时长,单位 ms

slots

slot说明
default直接填写需要放置的内容

exposed

参数名类型说明
zoom(zoom:float) => void手动缩放 zoom: 为缩放倍数
reset() => void重置缩放

v3-drag-zoom-item

props

参数名类型默认值是否必须说明
offsetarray[-50,-50]偏移量,默认值代表横向和纵向均偏移 -50%,也就是对齐中心点位置,偏移量单位为 %, 不支持 px
fixedsizebooleanfalse是否固定大小, true代表在缩放过程中该item内容尺寸不变
rotatefloat0旋转角度单位 deg (360度)
draggablebooleanfalse是否可以拖拽移动
position(v-model)curposition该 item 在内容中的位置(百分比位置)

slots

slot说明
default直接填写需要放置的内容

events

事件名参数说明
onmove( pos :position)=> void每移动一点距离触发,返回当前位置
onmovefinished( pos :position)=> void移动结束(鼠标抬起或超出范围)触发, 返回当前位置

curposition

参数名类型默认值是否必须说明
xfloat横向位置 %
yfloat纵向位置 %

position extend curposition

参数名类型默认值是否必须说明
xfloat横向位置 %
yfloat纵向位置 %
sub(pos:position)=>position计算当前 position 与 pos 之间的差值 new position(this.x - pos.x, this.y - pos.y);
add(pos:position)=>position计算当前 position 与 pos 之间的和值 new position(this.x + pos.x, this.y + p

以上就是vue3实现图片缩放拖拽功能的示例代码的详细内容,更多关于vue3图片缩放拖拽的资料请关注代码网其它相关文章!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com