分享一款前端组件画布容器组件: vue-grabbing-box

分享一款前端组件画布容器组件: vue-grabbing-box

背景

在移动端和PC端,用户通常期望能够以直观的方式操作和浏览大尺寸的内容,比如图片或其他Vue组件。为了提供更好的用户体验,我们需要一个灵活且易于使用的组件,以实现在移动端和PC端的拖拽、缩放等功能。这就是 vue-grabbing-box 组件的开发动机。

Github 地址: www.npmjs.com/package/vue...

✨求Star 求分享 ღ( ´・ᴗ・` )比心✨

组件功能描述:

vue-grabbing-box 是一个灵活的容器组件,它能够展示各种内容,无论是图片还是其他Vue组件,并为用户提供了多种交互方式以满足移动端和PC端的需求。

同时 支持 vue2、vue3。

移动端功能:

  1. 单指拖拽: 用户可以通过单指在画布上滑动,实现内容的拖拽。
  2. 双指缩放: 通过双指捏合或展开的手势,用户可以对内容进行缩放操作。
  3. 按钮操作: 提供按钮,用户可以通过点击按钮实现扩大、缩小及重置功能。

PC端功能:

  1. 单击拖拽: 用户可以通过在画布上单击并拖动鼠标,实现内容的拖拽。
  2. 滚动轮操作: 鼠标滚动轮的上下滚动效果相当于上下拖动画布。
  3. Ctrl + 滚动轮缩放: 按住Ctrl键的同时使用鼠标滚动轮,实现内容的缩放。
  4. 按钮操作: 同样提供按钮,用户可以通过点击按钮实现扩大、缩小及重置功能。

vue-grabbing-box 的目标是提供一致而直观的用户体验,使用户能够以他们习惯的方式在不同设备上操作和浏览内容。

vue2 使用说明

demo地址: github.com/CoderMonkie...

安装

bash 复制代码
pnpm add vue-grabbing-box
# or
npm install vue-grabbing-box
# or
yarn add vue-grabbing-box

引入插件

js 复制代码
// main.js
import Vue from 'vue';
import GrabbingBox from 'vue-grabbing-box'; // 直接引入默认 vue2
// 或
import GrabbingBox from 'vue-grabbing-box/dist/vue2'; // 指定 vue2(推荐)
// v0.1.0起,不再将css一并打包进js文件,需要单独引入样式
import 'vue-grabbing-box/dist/vue2/index.css';

Vue.use(GrabbingBox);

// 组件级安装(局部安装)也是支持的,只是就一个组件而已,又不是组件库,就没必要了
// 而且组件单独安装必需要单独引入样式
import GrabbingBox from 'vue-grabbing-box/packages/vue2/src/grabbing-box';
import 'vue-grabbing-box/dist/vue2/index.css';
Vue.use(GrabbingBox);
// 或
Vue.component(GrabbingBox.name, GrabbingBox);
html 复制代码
<template>
  <grabbing-box>
    <!-- 这里是内容区域,放你自己的内容 -->
  </grabbing-box>
</template>

vue3 使用说明

demo 地址: github.com/CoderMonkie...

js 复制代码
// main.js
import { createApp } from 'vue';
import GrabbingBox from 'vue-grabbing-box/dist/vue3';
// 或
import { GrabbingBox } from 'vue-grabbing-box/dist/vue3';
import 'vue-grabbing-box/dist/vue3/index.css';

const app = createApp();
app.use(GrabbingBox);
app.mount('#app');

相关API参数说明

属性参数

属性名 类型 默认值 说明
maxScale Number 200 放大最高比例限制,单位百分比
minScale Number 20 缩小的最小比例限制,单位百分比
scaleStep Number 10 放大缩小的步长,点击按钮时用,单位同上
initScale Number 100 初始化时的显示比例,v1.0.0-alpha.4~
scaleButtons Boolean true 是否显示 scale 按钮组,包括放大(+)缩小(-)和重置
scaleButtonsPosition String top right v0.1.1 指定缩放按钮组的位置, `top right bottom left`
scaleButtonsSpaceX String 10px v0.1.1 指定与边的横向距离
scaleButtonsSpaceY String 20px v0.1.1 指定与边的纵向距离
throttleSpan Number 100 50(from v0.1.3) 事件节流时间间隔,单位毫秒
scrollSpeed Number 3 1(from v0.1.3) deprecated from v0.1.7 v0.0.6 PC端鼠标滚动轮上下滚动倍速,可设范围1~6
emitClickOnDrag Boolean false v0.1.4 拖拽后仍触发点击事件 (只是为了预防有特殊需要, 通常可以忽略这个参数 #7 屏蔽 click)

事件(from v0.1.7)

事件名称 说明 回调参数
update 任何显示效果的变化都会触发(包括放大缩小拖拽和重置) { scale, translateX, translateY }
zoom-in 放大显示效果的时候触发 { scale, translateX, translateY }
zoom-out 缩小显示效果的时候触发 { scale, translateX, translateY }
move 改变横向或竖向位置的时候触发,也就是拖拽或者滚动轮滚动或者触摸板滚动 Object
reset 重置时触发 -
相关推荐
码客前端5 分钟前
理解 Flex 布局中的 flex:1 与 min-width: 0 问题
前端·css·css3
Komorebi゛5 分钟前
【CSS】圆锥渐变流光效果边框样式实现
前端·css
工藤学编程18 分钟前
零基础学AI大模型之CoT思维链和ReAct推理行动
前端·人工智能·react.js
徐同保18 分钟前
上传文件,在前端用 pdf.js 提取 上传的pdf文件中的图片
前端·javascript·pdf
怕浪猫19 分钟前
React从入门到出门第四章 组件通讯与全局状态管理
前端·javascript·react.js
博主花神20 分钟前
【React】扩展知识点
javascript·react.js·ecmascript
内存不泄露25 分钟前
基于Spring Boot和Vue 3的智能心理健康咨询平台设计与实现
vue.js·spring boot·后端
欧阳天风27 分钟前
用setTimeout代替setInterval
开发语言·前端·javascript
EndingCoder30 分钟前
箭头函数和 this 绑定
linux·前端·javascript·typescript
郑州光合科技余经理31 分钟前
架构解析:同城本地生活服务o2o平台海外版
大数据·开发语言·前端·人工智能·架构·php·生活