当前位置: 首页 > news >正文

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

目录

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

re-resizable github地址

安装

$ npm install --save re-resizable

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

使用方法

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

示例

  1. 使用默认大小

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

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

  2. 使用状态控制大小

    <Resizablesize={{ 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>);
}

相关文章:

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

目录 安装使用方法示例Props 属性方法示例代码调整兄弟div的宽度 re-resizable github地址 安装 $ npm install --save re-resizable这将安装re-resizable库并将其保存为项目的依赖项。 使用方法 re-resizable 提供了一个 <Resizable> 组件&#xff0c;它可以包裹任何…...

QT 创建文件 Ui 不允许使用不完整类型,可以尝试添加一下任何头文件

#include "debug.h" #include "qmessagebox.h" #pragma execution_character_set("utf-8") //QT 创建文件 Ui 不允许使用不完整类型,尝试添加一下任何头文件&#xff0c;或者添加ui_xx.h头文件 debug::debug(QWidget *parent) : QDialog(p…...

Python:深入探索其生态系统与应用领域

Python&#xff1a;深入探索其生态系统与应用领域 Python&#xff0c;作为一种广泛应用的编程语言&#xff0c;其生态系统之丰富、应用领域之广泛&#xff0c;常常令人叹为观止。那么&#xff0c;Python究竟涉及哪些系统&#xff1f;本文将从四个方面、五个方面、六个方面和七…...

EXCEL从图片链接获取图片

step1: 选中图片地址列 step2:开发工具→Visual Basic 文件→导入 导入我制作的脚本&#xff08;代码见文章末尾&#xff09; 点击excel的小图标回到表格界面。 点击【宏】 选中刚才导入的脚本&#xff0c;点执行&#xff0c;等待完成。 代码本体&#xff1a; Sub InsertPict…...

Docker迁移默认存储目录(GPT-4o)

Docker在Ubuntu的默认存储目录是/var/lib/docker&#xff0c;要将 Docker 的默认存储目录迁移到指定目录&#xff08;譬如大存储磁盘&#xff09;&#xff0c;可以通过修改 Docker 守护进程的配置文件来实现。 1.创建新的存储目录&#xff1a; 选择你想要存储 Docker 分层存储…...

植物大战僵尸杂交版2.0.88最新版安装包

游戏简介 游戏中独特的杂交植物更是为游戏增添了不少亮点。这些杂交植物不仅外观独特&#xff0c;而且拥有更强大的能力&#xff0c;能够帮助玩家更好地应对游戏中的挑战。玩家可以通过一定的条件和方式&#xff0c;解锁并培养这些杂交植物&#xff0c;从而不断提升自己的战斗…...

MQ基础(RabbitMQ)

通信 同步通信&#xff1a;就相当于打电话&#xff0c;双方交互是实时的。同一时刻&#xff0c;只能与一人交互。 异步通信&#xff1a;就相当于发短信&#xff0c;双方交互不是实时的。不需要立刻回应对方&#xff0c;可以多线程操作&#xff0c;跟不同人同时聊天。 RabbitM…...

eclipse添加maven插件

打开eclipse菜单 Help/Install New SoftwareWork with下拉菜单选择 2022-03 - https://download.eclipse.org/releases/2022-03‘type filter text’搜索框中输入 maven选择 M2E - Maven Integration for Eclipse一路next安装&#xff0c;重启eclipseImport项目时&#xff0c;就…...

知识库系统:从认识到搭建

在这个信息过载的时代&#xff0c;企业越来越需要一个集中的知识库系统来促进员工协作和解决问题。本文跟着LookLook同学一起来探讨搭建高效知识库系统的所有注意事项和知识库系统的最佳推荐。 | 什么是知识库系统 知识库系统是一种软件或工具&#xff0c;旨在填补组织内的知识…...

JVM双亲委派模型

在之前的JVM类加载器篇中说过&#xff0c;各个类加载器都有自己加载的范围&#xff0c;比如引导类加载器只加载Java核心库中的class如String&#xff0c;那如果用户自己建一个包名和类名与String相同的类&#xff0c;会不会被引导类加载器加载。可以通过如下代码测试&#xff0…...

Python语言与算法:深度探索与实战应用

Python语言与算法&#xff1a;深度探索与实战应用 在数字化浪潮汹涌的时代&#xff0c;Python语言以其简洁、易读和强大的功能库成为了编程界的翘楚。而算法&#xff0c;作为计算机科学的核心&#xff0c;是解决问题、优化性能的关键。本文将围绕Python语言与算法的结合&#…...

Python实现连连看7

3.3 根据地图显示图片 在获取了图片地图之后,就可以根据该图片地图显示图片了。显示图片的功能在自定义函数drawMap()中实现。 3.3.1 清除画布中的内容 在画布上显示图片之前,需要将画布中图1的启动界面内容清除,代码如下所示。 canvas.delete(all) 其中,delete()方法…...

C#中的as和is

在 C# 中&#xff0c;as 和 is 是用于类型转换和类型检查的操作符。 as 操作符&#xff1a; as 操作符用于尝试将一个对象转换为指定的引用类型或可空类型&#xff0c;如果转换失败&#xff0c;将返回 null。语法&#xff1a;expression as type示例&#xff1a; object obj &…...

示波器眼图怎么看

目录 什么是眼图&#xff1f; 怎么看&#xff1f; 眼图的电压幅度&#xff08;Y轴&#xff09; 眼睛幅度和高度 信噪比 抖动 上升时间和下降时间 眼宽 什么是眼图&#xff1f; 眼图&#xff08;Eye Diagram&#xff09;是一种用于分析高速数字信号传输质量的重要工具。通…...

Visual Studio Code编辑STM32CubeMX已生成的文件

在这里插入图片描述...

【读脑仪game】

读脑仪&#xff08;Brain-Computer Interface&#xff0c;BCI&#xff09;游戏是一种利用脑电信号来控制游戏的新型交互方式。这类游戏通常需要专业的硬件设备来读取用户的脑电信号&#xff0c;并将这些信号转化为游戏中的控制信号。编写这样的游戏代码涉及到多个方面&#xff…...

基于STM32的毕业设计示例

**基于STM32的毕业设计示例** 一、引言 在当前的电子工程领域&#xff0c;STM32微控制器因其高性能、低功耗和丰富的外设接口而备受青睐。本次毕业设计旨在展示基于STM32微控制器的系统设计与实现能力&#xff0c;通过构建一个具有实际应用价值的系统&#xff0c;体现对嵌入式…...

图片格式怎么转成pdf,简单的方法

在现代数字化时代&#xff0c;图片格式转换成PDF已经成为许多人的日常需求。无论是为了存档、分享还是打印&#xff0c;将图片转换为PDF都是一项非常实用的技能。本文将详细介绍如何将图片格式转换成PDF的方法。 用浏览器打开 "轻云处理pdf官网&#xff0c;上传图片。 图…...

在 Debian 上使用和配置 SSH 的指南

SSH&#xff08;Secure Shell&#xff09;是用于在不安全网络上安全登录远程计算机和执行命令的协议。本文将详细介绍如何在 Debian 系统上安装、配置和使用 SSH。 1. 安装 SSH 首先&#xff0c;您需要安装 OpenSSH 服务器和客户端&#xff08;也可直接安装服务器端&#xff…...

Sleep | 纺锤波-慢波耦合与解决问题的能力:年龄的影响

摘要 本研究考察了衰老如何影响睡眠在巩固新学习的认知策略中的作用。共纳入40名健康年轻人(20-35岁)和30名健康老年人(60-85岁)。参与者接受了河内塔(ToH)任务的训练&#xff0c;然后&#xff0c;每个年龄组的一半参与者被分配到90分钟的午睡条件下&#xff0c;另一半则保持清…...

代码随想录 day 30

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

SD NAND(贴片式TF卡)坏块管理技术问答

Q1:什么是NAND的块(Block))? 每个Nand包含一个或多个Chip。Chip是可以独立执行命令并上报状态的最小单元。 每个Chip包含一个或多个plane。不同的plane间可以并发操作&#xff0c;不过有一些限制。 每个plane包含多block&#xff0c;block是最小擦除单元&#xff08;擦除后为…...

学习使用js监测浏览器窗口大小变化

学习使用js监测浏览器窗口大小变化 在JavaScript中&#xff0c;可以通过监听resize事件来检测浏览器窗口的大小变化。以下是一个简单的示例代码&#xff0c;用于检测浏览器窗口大小的变化并在控制台输出新的窗口尺寸&#xff1a; javascript // 定义一个处理窗口大小变化的函数…...

微服务开发与实战Day02 - Docker

一、Docker快速入门 快速构建、运行、管理应用的工具 安装部署教程&#xff1a;Docs 1. 部署MySQL 测试连接&#xff1a; 镜像和容器 当我们利用Docker安装应用时&#xff0c;Docker会自动搜索并下载应用镜像&#xff08;image&#xff09;。镜像不仅包含应用本身&#xff…...

蒙层(css)

如何在 Vue 中实现一个包含图像和蒙层效果的组件&#xff1f;这个组件根据某个条件显示或隐藏蒙层&#xff0c;用于表示图像是否已读。 1. 创建基础模板 首先&#xff0c;我们在模板中使用 div 包裹我们的图像组件 GraphImage&#xff0c;并为最外层 div 设置 position: relat…...

SpringBoot前端URL访问本地磁盘文件

SpringBoot前端通过 URL访问本地磁盘文件&#xff0c;其实就是 SpringBoot访问web中的静态资源的处理方式。 SpringBoot 访问web中的静态资源&#xff1a;https://blog.csdn.net/qq_42402854/article/details/90295079 首先&#xff0c;我们知道浏览器访问本地磁盘文件的方式为…...

【WP】猿人学2_js混淆_动态cookie

https://match.yuanrenxue.cn/match/2 抓包分析 根据发包加密参数在cookie中 删除cookie带的m参数&#xff0c;重新点击其他页面&#xff0c;然后使用Fiddler抓包 第一个包请求没有携带m&#xff0c;但是后面的请求是附带了m了&#xff0c;所以m就是在此之间生成 查看不带…...

基于springboot实现民族婚纱预定系统项目【项目源码+论文说明】

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

String常用操作

String常用方法 构造字符串 常用的构造字符串有3种&#xff1a; 1.直接赋值String s "abcd"; 2.实例化调用构造方法String s new String("abcd"); 3.实例化传字符数组 char[] ch {a,b,c,d}; String s new String(ch);字符串比较 比较 比较的是两个…...

git: 批量删除分支

环境&#xff1a; window11git version 2.42.0git-bash.exe window环境下&#xff1a; 1. 批量删除本地 git branch |grep xxx |xargs git branch -D比如&#xff1a; 想批量删除本地含有 release 关键字的分支&#xff1a; 2. 批量删除远程 git branch -r | grep xxxx | …...