前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >react-moveable轻松实现元素移动、缩放和旋转

react-moveable轻松实现元素移动、缩放和旋转

原创
作者头像
一起重学前端
发布2024-09-22 13:24:06
210
发布2024-09-22 13:24:06

react-moveable

react-moveable 是一个用于 React 的库。

它通常用于在 React 应用中实现可移动的元素,比如图像、组件等的拖放、缩放、旋转等交互功能。这个库可以帮助开发者轻松地为用户提供更加灵活和动态的界面交互体验。

安装

你可以通过 npm 或 yarn 安装 react-moveable

代码语言:bash
复制
npm install react-moveable

# 或者

yarn add react-moveable

注意react对应版本

代码语言:json
复制
"react": "^17.0.1",

"react-moveable": "^0.26.2",

基本用法

以下是一个简单的 react-moveable 示例,展示了如何创建一个可移动的元素:

代码语言:jsx
复制
import React, { useRef } from 'react';

import Moveable from 'react-moveable';



const App = () => {

  const targetRef = useRef();



  return (

    <div>

      <div ref={targetRef} style={{ width: '100px', height: '100px', backgroundColor: 'red' }}>

        Move me!

      </div>

      <Moveable

        target={targetRef}

        draggable={true}

      />

    </div>

  );

};



export default App;

属性

react-moveable 提供了许多属性来自定义可移动元素的行为和外观。以下是一些常用属性:

  • target: 需要变为可移动的元素的引用。
  • draggable: 设置为 true 时,元素可拖动。
  • resizable: 设置为 true 时,元素可缩放。
  • scalable: 设置为 true 时,元素可缩放。
  • rotatable: 设置为 true 时,元素可旋转。
  • boundingBox: 设置为 true 时,元素将被限制在其父容器内移动。
  • onDrag: 拖动时的回调函数。
  • onResize: 缩放时的回调函数。
  • onScale: 缩放时的回调函数。(触发时机和onResize不同)
  • onRotate: 旋转时的回调函数。

onResize和onScale的区别

onResize 和 onScale 在 react-moveable 中都与缩放操作有关,但它们的具体含义和触发时机有所不同。

onResize

onResize 是在用户通过拖动元素的边框来进行缩放时触发的事件。这种缩放通常是通过鼠标点击并拖动元素的右下角或侧边来实现的。onResize 事件会在缩放操作的开始、进行中和结束时分别触发对应的回调函数(onResizeStartonResize 和 onResizeEnd)。

onScale

onScale 则是在用户通过捏合手势(如在触摸屏设备上用两个手指进行缩放)来进行缩放时触发的事件。onScale 事件会在缩放操作的进行中持续触发,每次缩放的比例变化都会触发一次 onScale 回调函数。

区别
  • 触发方式onResize 通常是通过鼠标操作触发的,而 onScale 则是通过触摸屏设备的捏合手势触发的。
  • 使用场景onResize 更适用于桌面端的缩放操作,而 onScale 则更适用于移动端的缩放操作。
  • 触发时机onResize 在缩放操作的开始、进行中和结束时都会触发对应的回调函数,而 onScale 只在缩放操作的进行中持续触发。
使用示例

以下是一个同时使用了 onResize 和 onScale 的示例:

代码语言:jsx
复制
import React, { useRef } from 'react';

import Moveable from 'react-moveable';



const App = () => {

  const targetRef = useRef();



  const handleResize = (event) => {

    console.log('Resizing', event);

  };



  const handleScale = (event) => {

    console.log('Scaling', event);

  };



  return (

    <div>

      <div ref={targetRef} style={{ width: '100px', height: '100px', backgroundColor: 'red' }}>

        Resize and Scale me!

      </div>

      <Moveable

        target={targetRef}

        resizable={true}

        scalable={true}

        onResize={handleResize}

        onScale={handleScale}

      />

    </div>

  );

};



export default App;

当用户通过拖动边框进行缩放时,handleResize 函数会被调用;当用户通过捏合手势进行缩放时,handleScale 函数会被调用。

实际应用场景:

一、图片编辑与布局

在图像编辑类应用中,react-moveable可以让用户自由地移动、调整图片的位置和大小。例如,在一个在线照片编辑工具中,用户可以通过拖动图片来调整其在画布上的位置,通过拉伸边框来改变图片的大小。这样的功能可以极大地提高用户的操作体验,让他们能够更加灵活地进行图片布局和编辑。

二、界面组件布局

对于复杂的用户界面设计,react-moveable可以帮助开发者实现可拖动的界面组件。比如,在一个管理后台系统中,管理员可能需要根据自己的需求调整各个模块的位置和大小。通过使用react-moveable,可以让这些模块变成可移动的组件,方便用户进行个性化的布局设置。

三、低代码图片编辑

在数据可视化项目中,react-moveable可以用于编辑可视化图表。用户可以拖动图表中的元素,如柱状图的柱子、折线图的节点等,来调整数据的展示方式。同时,也可以通过移动整个图表来改变其在页面中的位置,以便更好地与其他元素进行布局搭配。

moveable github

moveable Demo

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • react-moveable
    • 安装
      • 基本用法
        • 属性
          • onResize和onScale的区别
            • onResize
            • onScale
            • 区别
            • 使用示例
          • 实际应用场景:
          相关产品与服务
          图片处理
          图片处理(Image Processing,IP)是由腾讯云数据万象提供的丰富的图片处理服务,广泛应用于腾讯内部各产品。支持对腾讯云对象存储 COS 或第三方源的图片进行处理,提供基础处理能力(图片裁剪、转格式、缩放、打水印等)、图片瘦身能力(Guetzli 压缩、AVIF 转码压缩)、盲水印版权保护能力,同时支持先进的图像 AI 功能(图像增强、图像标签、图像评分、图像修复、商品抠图等),满足多种业务场景下的图片处理需求。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档