【react】react项目支持鼠标拖拽的边框改变元素宽度的组件

目录

  • 安装
  • 使用方法
  • 示例
  • Props 属性
  • 方法
  • 示例代码
  • 调整兄弟div的宽度

re-resizable github地址

安装

$ npm install --save re-resizable

这将安装re-resizable库并将其保存为项目的依赖项。

使用方法

re-resizable 提供了一个 <Resizable> 组件,它可以包裹任何内容,并使其可调整大小。

示例

  1. 使用默认大小

    <Resizable
      defaultSize={{
        width: 320,
        height: 200,
      }}
    >
      Sample with default size
    </Resizable>
    

    这将创建一个初始宽度为320像素,高度为200像素的可调整大小的组件。

  2. 使用状态控制大小

    <Resizable
      size={{ width: this.state.width, height: this.state.height }}
      onResizeStop={(e, direction, ref, d) => {
        this.setState({
          width: this.state.width + d.width,
          height: this.state.height + d.height,
        });
      }}
    >
      Sample with size
    </Resizable>
    

    这个示例展示了如何使用组件的状态来控制和更新可调整大小组件的尺寸。

Props 属性

  • defaultSize: 设置拖动项的起始宽度和高度。
  • size: 控制组件的大小,可以是数字或字符串(如 '50%')。
  • className: 设置自定义类名。
  • style: 设置自定义样式。
  • minWidthminHeight: 设置最小宽度和高度。
  • maxWidthmaxHeight: 设置最大宽度和高度。
  • grid: 指定调整大小的增量。
  • lockAspectRatio: 锁定宽高比。
  • lockAspectRatioExtraWidthlockAspectRatioExtraHeight: 允许在保持宽高比的同时增加额外的宽度或高度。
  • bounds: 指定调整大小的边界。
  • handleStyles, handleClasses, handleComponent, handleWrapperStyle, handleWrapperClass: 自定义调整手柄的样式、类名、组件和包装器样式。
  • enable: 设置可调整大小的权限。
  • onResizeStart, onResize, onResizeStop: 在调整大小开始、进行中和停止时调用的回调函数。

方法

  • updateSize(size): 更新组件的大小,忽略 gridmax/minWidthmax/minHeight 属性。

示例代码

class YourComponent extends Component {
  ...

  update() {
    this.resizable.updateSize({ width: 200, height: 300 });
  }

  render() {
    return (
      <Resizable ref={c => { this.resizable = c; }}>
        example
      </Resizable>
    );
  }

  ...
}

在这个示例中,update 方法用于通过引用调用 updateSize 方法来更新可调整大小组件的大小。

re-resizable 提供了丰富的API和灵活的配置选项,使得在React应用中实现自定义的可调整大小界面元素变得简单。

总宽度是固定的,改变一个容器的宽度,其他容器的宽度会自动增大或减小。

如下图所示,有两个并排排列,颜色不同的容器,拖拽蓝色容器的右边缘可动态改变二者的宽度

调整兄弟div的宽度

例如:总宽度是固定的,改变一个容器的宽度,其他容器的宽度会自动增大或减小。

如下图所示,有两个并排排列,颜色不同的容器,拖拽蓝色容器的右边缘可动态改变二者的宽度
在这里插入图片描述
实现的上述效果也很简单,re-resizable提供了onResize方法给我们,在我们调整宽度时,会输出其容器改变后的的位置信息:
在这里插入图片描述
所以我们可以利用该方法,将改变了多少宽度值放在state中,然后再红色容器的宽度设置中,减去该值就可以实现上述的效果了。

import { Resizable } from 're-resizable';
import { useState } from 'react';

export default function Demo() {
  const [w, setW] = useState<number>(0);
  return (
   <div style={{ display: 'flex', margin: 30 }}>
      <Resizable defaultSize={{ width: 400, height: 300 }} maxWidth={700} onResize={(e: any) => setW(e.x - 400)}>
        <div style={{ backgroundColor: 'blue', width: '100%', height: '100%' }}></div>
      </Resizable>
      <div style={{ backgroundColor: 'red', width: `calc(400px - ${w}px)`, height: 300 }}></div>
    </div>
  );
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/684160.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

三、go微服务项目“商城项目实战开发”用户管理user-web端编写和登录校验

文章目录 商城项目实战开发user-web端编写和用户登录校验03、user-web接口的gin的整合和路由的搭建04、gin如何调用grpc接口05 登录接口安全性检验05、用户服务整合微服务注册中心组件—Nacos06、用户服务整合微服务配置中心组件—Nacos商城项目实战开发user-web端编写和用户登…

c#vb代码互转工具

下载地址&#xff1a; https://download.csdn.net/download/wgxds/88979921

做电化学研究如何发表Angew Chemie,案例分析

✨【元素魔方学术俱乐部】✨ &#x1f469;‍&#x1f3eb;&#x1f468;‍&#x1f3eb;我们创建了一个学术交流群 给全国各地以及各种研究方向的硕博 和老师们提供一个交流的平台&#x1f4da;&#x1f9ea; 感兴趣的话欢迎加入 &#x1f4f2;本公众号中回复“社群” 会自动发…

Python for循环 使用两个变量

https://geek-docs.com/python/python-ask-answer/336_python_for_loop_with_two_variables.html 一、使用zip()函数进行迭代 zip()函数可以将两个或多个可迭代对象打包成一个元组序列。 fruits [apple, banana, orange] prices [0.5, 0.3, 0.4]for fruit, price in zip(f…

基于springboot实现社区养老服务系统项目【项目源码+论文说明】计算机毕业设计

基于springboot实现社区养老服务系统演示 摘要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本社区养老服务系统就是在这样的大环境下诞生&#xff0c;其可以帮助…

ubuntu top命令的参数和快捷键

命令选项 -1 单个、所有cpu信息切换 top -1-b 批处理 top -b > top.txt这将保存top命令的输出到文件&#xff0c;直到手动终止或关机。所以使用这个命令要注意和其他命令配合&#xff0c;否则文件速度增长会很快。 在文件中&#xff0c;将会重复输入top命令。 -c 切换命…

vulnhub靶机实战_DC-2

下载 靶机下载链接汇总&#xff1a;https://download.vulnhub.com/使用搜索功能&#xff0c;搜索dc类型的靶机即可。本次实战使用的靶机是&#xff1a;DC-2下载链接&#xff1a;https://download.vulnhub.com/dc/DC-2.zip 启动 下载完成后&#xff0c;打开VMware软件&#xf…

如何理解与学习数学分析——第二部分——数学分析中的基本概念——第5章——序列

第2 部分&#xff1a;数学分析中的基本概念 (Concepts in Analysis) 5. 序列(Sequences) 本章介绍了序列属性&#xff0c;例如单调性、有界性和收敛性&#xff0c;使用图表和示例来解释这些属性&#xff0c;并演示如何在各种证明中使用它们的定义。讨论了趋于无穷大的序列出…

神经网络 torch.nn---Containers

torch.nn — PyTorch 2.3 documentation torch.nn - PyTorch中文文档 (pytorch-cn.readthedocs.io) nn是Neural Network的简称&#xff0c;帮助程序员方便执行如下的与神经网络相关的行为&#xff1a; &#xff08;1&#xff09;创建神经网络 &#xff08;2&#xff09;训练…

项目部署服务器--浏览器拒绝访问问题

一、检查自己的环境 是本地环境、还是虚拟环境 当您使用 Gunicorn 启动 Flask 应用并监听 0.0.0.0:5000 时&#xff0c;您的 Flask 应用已经可以在服务器上运行并通过该端口提供服务了。但是&#xff0c;0.0.0.0 是一个特殊的 IP 地址&#xff0c;它表示“所有可用的网络接口”…

全球AI新闻速递6.4

1.港大&百度&#xff1a;发布首个智慧城市大模型UrbanGPT。 2.科大讯飞&#xff1a;讯飞星火 V4.0 正在训练中&#xff0c;对标GPT-4o产品在研发中。 3.阿里巴巴与世卫组织达成战略合作&#xff0c;全球推广达摩院 AI 癌症筛查技术。 4.赛迪顾问研究&#xff1a;2026 年…

LINUX系统编程:信号(2)

目录 2.信号的保存 2.1信号保存的基本概念 2.2信号在哪里保存的&#xff1f;怎么保存的&#xff1f; 2.3处理信号的三张表 2.4三张表的匹配操作和系统调用接口 2.4.1sigprocmask 2.4.2sigemptyset 2.4.3sigfillset 2.4.4sigaddset&&sigdelset 2.4.5sigismembe…

代码随想录 day 30

回溯总结&#xff1a; 相当于暴力for循环&#xff0c;其目的用递归控制for循环嵌套的数量。当剪枝时&#xff0c;就可以使得嵌套数量减少。把回溯问题抽象一颗树比较好懂。并且使得代码更简洁。 对于组合问题&#xff0c;什么时候需要startIndex呢&#xff1f; 在一个集合求组合…

awdawdawd

c语言中的小小白-CSDN博客c语言中的小小白关注算法,c,c语言,贪心算法,链表,mysql,动态规划,后端,线性回归,数据结构,排序算法领域.https://blog.csdn.net/bhbcdxb123?spm1001.2014.3001.5343 给大家分享一句我很喜欢我话&#xff1a; 知不足而奋进&#xff0c;望远山而前行&am…

Java+前端+Vue 后端Spring boot 开发的全套UWB定位方案,0.1米高精度定位系统源码

Java前端Vue 后端Spring boot 开发的全套UWB定位方案,0.1米高精度定位系统源码 UWB定位系统由硬件定位设备、定位引擎和应用软件组成。该定位系统应用软件支持PC端和移动端访问&#xff0c;并提供位置实时显示、历史轨迹回放、人员考勤、电子围栏、行为分析、智能巡检等功能…

深度学习中torch.max函数的作用

文章目录 解释代码举例 解释 torch.max 是 PyTorch 中的一个函数&#xff0c;用于在张量中沿指定维度计算最大值。它有两种用法&#xff1a; ① 如果只提供一个输入张量&#xff0c;则返回该张量中的最大值和对应的索引。     ② 如果提供两个输入张量&#xff0c;则返回两…

【管理咨询宝藏125】超大型集团组织架构设计方案报告

本报告首发于公号“管理咨询宝藏”&#xff0c;如需阅读完整版报告内容&#xff0c;请查阅公号“管理咨询宝藏”。 【管理咨询宝藏125】超大型集团组织架构设计方案报告 【格式】PDF版本 【关键词】人力咨询、组织架构设计、流程优化 【核心观点】 - 通过组织诊断看到&#x…

Python怎么发邮件不会被拦?如何设置信息?

Python发邮件的注意事项&#xff1f;Python发邮件需要哪些库&#xff1f; 使用Python发送电子邮件是一个常见的需求。然而&#xff0c;有时候邮件可能会被拦截&#xff0c;要确保发送的邮件不被拦截&#xff0c;需要一些技巧和注意事项。AokSend将介绍如何使用Python发送邮件&…

用友NC BeanShell远程命令执行(CNVD-2021-30167)漏洞复现

1.简介 用友NC是一款企业级管理软件&#xff0c;在大中型企业广泛使用。实现建模、开发、继承、运行、管理一体化的IT解决方案信息化平台。用友 NC bsh.servlet.BshServlet目录存在远程命令执行漏洞&#xff0c;可通过BeanShell 执行远程命令获取服务器权限。 貌似所有版本都存…

Python邮件群发有哪些步骤?如何批量发送?

Python邮件群发的注意事项&#xff1f;怎么使用Python群发邮件&#xff1f; 使用Python进行邮件群发&#xff0c;不仅可以自动化流程&#xff0c;还可以节省大量的时间和精力。AokSend将详细介绍使用Python进行邮件群发的步骤&#xff0c;并在过程中提供实用的建议和注意事项。…