前端(十五)——开源一个用react封装的图片预览组件

简介: 前端(十五)——开源一个用react封装的图片预览组件

运行

装依赖

npm i   

运行

npm start

打开

http://localhost:3000/



效果展示




实现思路

  • 创建一个React函数组件并命名为ImageGallery
  • 在组件内部,使用useState钩子来定义状态变量,并初始化为合适的初始值。

selectedImageUrl来追踪当前选中的图片URL;

isOpen来追踪模态框的显示状态;

zoomLevel来追踪图片的缩放级别;

rotateDeg来追踪图片的旋转角度;

flipState来追踪图片的翻转状态等。

  • 渲染组件时,使用map()方法遍历传入的图片URL数组,并为每个元素创建一个缩略图。为每个缩略图添加点击事件处理函数,以便在点击时更新selectedImageUrlisOpen的状态。
  • 在模态框中,根据isOpen的状态决定是否显示模态框。如果isOpen为真,则显示模态框。
  • 在模态框中,显示选中的大图。根据zoomLevelrotateDeg应用相应的样式来缩放和旋转图片。

使用CSS的transform属性来实现缩放和旋转效果

  • 在模态框中,添加放大、缩小、旋转和翻转的功能按钮。为每个按钮添加点击事件处理函数,以便在点击时更新相应的状态变量,如zoomLevel、rotateDegflipState
  • 为模态框添加键盘事件监听。根据按下的键码来触发不同的操作,例如切换图片、放大缩小等功能。
  • 实现拖拽功能,通过鼠标事件监听鼠标按下、移动和松开的过程,在对应的事件处理函数中计算鼠标位移距离,并更新图片的位置。
  • 添加全屏展示功能。为模态框添加全屏按钮,并在点击时调用浏览器的Fullscreen API来进入或退出全屏模式。



使用思路和api

我觉得react没有顺手的图片预览组件,然后就自己封装一个,放在项目文件里,自己本地导入使用,需要微调。也不用担心组件之间的高耦合度,自己也可以控制。

API全部在代码里,手动微调即可。




实现的功能

拖拽,上下左右翻转、旋转,全屏,缩放,缩略图高亮

具体描述如下,缩放级别等数据可以自己改。在哪里改,都有注释,非常清晰

  • 点击缩略图可以在模态框中展示选中的图片,并带有高亮。
  • 可以放大和缩小图片,最大放大到130%,最小缩小到30%。
  • 可以旋转图片,左旋转和右旋转分别是每次旋转90度。
  • 可以上下翻转和水平翻转图片,点击按钮可以进行翻转和恢复默认状态。
  • 可以使用键盘的箭头键进行上一张和下一张图片的切换,同时也支持使用键盘的上下箭头进行放大和缩小。
  • 可以通过拖拽图片进行位置的调整,鼠标按下开始拖拽,松开结束拖拽。
  • 可以进入全屏模式查看图片,再次点击退出全屏。
  • 在模态框中显示缩略图,点击缩略图可以切换到相应的图片。



数据和入口

数据是在APP.jsx里的data,可以换成接口请求到的图片数组

数据入口是在APP.jsx里的<ImagePreview images={images}></ImagePreview>标签上,这个images就是data这个图片数组




部分代码展示

⭐⭐⭐⭐⭐css




⭐⭐⭐⭐⭐jsx


相关文章
|
1月前
|
前端开发 JavaScript 开发者
颠覆传统:React框架如何引领前端开发的革命性变革
【10月更文挑战第32天】本文以问答形式探讨了React框架的特性和应用。React是一款由Facebook推出的JavaScript库,以其虚拟DOM机制和组件化设计,成为构建高性能单页面应用的理想选择。文章介绍了如何开始一个React项目、组件化思想的体现、性能优化方法、表单处理及路由实现等内容,帮助开发者更好地理解和使用React。
77 9
|
26天前
|
监控 前端开发 数据可视化
3D架构图软件 iCraft Editor 正式发布 @icraft/player-react 前端组件, 轻松嵌入3D架构图到您的项目,实现数字孪生
@icraft/player-react 是 iCraft Editor 推出的 React 组件库,旨在简化3D数字孪生场景的前端集成。它支持零配置快速接入、自定义插件、丰富的事件和方法、动画控制及实时数据接入,帮助开发者轻松实现3D场景与React项目的无缝融合。
99 8
3D架构图软件 iCraft Editor 正式发布 @icraft/player-react 前端组件, 轻松嵌入3D架构图到您的项目,实现数字孪生
|
29天前
|
前端开发 JavaScript 开发者
使用React和Redux构建高效的前端应用
使用React和Redux构建高效的前端应用
33 1
|
1月前
|
前端开发 JavaScript 开发者
超实用开源前端商城模板,助力电商项目飞速启航!免费直接可用!
分享一款精心设计的开源前端商城模板,涵盖商品展示、购物车、订单处理、用户登录注册等核心功能,使用HTML、CSS、JS和jQuery构建,结构清晰,适合新手和资深开发者,助力电商项目快速启动。
72 0
超实用开源前端商城模板,助力电商项目飞速启航!免费直接可用!
|
1月前
|
前端开发 JavaScript Android开发
前端框架趋势:React Native在跨平台开发中的优势与挑战
【10月更文挑战第27天】React Native 是跨平台开发领域的佼佼者,凭借其独特的跨平台能力和高效的开发体验,成为许多开发者的首选。本文探讨了 React Native 的优势与挑战,包括跨平台开发能力、原生组件渲染、性能优化及调试复杂性等问题,并通过代码示例展示了其实际应用。
63 2
|
24天前
|
前端开发 JavaScript 算法
探索现代前端框架——React 的性能优化策略
探索现代前端框架——React 的性能优化策略
21 0
|
24天前
|
前端开发 JavaScript API
探索现代前端框架——React 的性能优化策略
探索现代前端框架——React 的性能优化策略
26 0
|
2月前
|
存储 人工智能 前端开发
前端大模型应用笔记(三):Vue3+Antdv+transformers+本地模型实现浏览器端侧增强搜索
本文介绍了一个纯前端实现的增强列表搜索应用,通过使用Transformer模型,实现了更智能的搜索功能,如使用“番茄”可以搜索到“西红柿”。项目基于Vue3和Ant Design Vue,使用了Xenova的bge-base-zh-v1.5模型。文章详细介绍了从环境搭建、数据准备到具体实现的全过程,并展示了实际效果和待改进点。
178 2
|
2月前
|
JavaScript 前端开发 程序员
前端学习笔记——node.js
前端学习笔记——node.js
49 0
|
2月前
|
人工智能 自然语言处理 运维
前端大模型应用笔记(一):两个指令反过来说大模型就理解不了啦?或许该让第三者插足啦 -通过引入中间LLM预处理用户输入以提高多任务处理能力
本文探讨了在多任务处理场景下,自然语言指令解析的困境及解决方案。通过增加一个LLM解析层,将复杂的指令拆解为多个明确的步骤,明确操作类型与对象识别,处理任务依赖关系,并将自然语言转化为具体的工具命令,从而提高指令解析的准确性和执行效率。
下一篇
DataWorks